Difference between revisions of "Perl 101 for EPrints"

From EPrints Documentation
Jump to: navigation, search
(Retrieving data from a structure in a config file)
(Retrieving data from a config file)
Line 24: Line 24:
 
];
 
];
 
</source>
 
</source>
 +
 
Retrieving values from this config file in an export plugin under /plugins/EPrints/Plugin/Export/example.pm
 
Retrieving values from this config file in an export plugin under /plugins/EPrints/Plugin/Export/example.pm
  
Line 36: Line 37:
 
  }
 
  }
 
}
 
}
 +
</source>
 +
 +
Supporting function that returns an arrayref
 +
 +
<source lang="perl">
 +
sub generate_tag {
 +
my ($plugin, $eprint, $field_conf) = @_;
 +
 +
#Constant value
 +
if ($field_conf->{type} eq 'constant')
 +
{
 +
return $plugin->generate_constant_tag($eprint, $field_conf);
 +
}
 +
}
 +
</source>
 +
 +
Supporting function that generates a tag
 +
 +
<source lang="perl">
 +
sub generate_constant_tag
 +
{
 +
my ($plugin, $eprint, $field_conf) = @_;
 +
 +
my $tag = $plugin->_simple_tag($field_conf, $field_conf->{value});
 +
 +
return [ $tag ];
 +
}
 
</source>
 
</source>

Revision as of 03:51, 12 June 2015


Retrieving data from a config file

Example of a data config file under /cfg/cfg.d/example.pl

$c->{etd_ms}->{fields} = [
	{ tagname => 'etd_ms:title', eprint_fieldname => 'title', type => 'simple_text', include_null_value => 1 },
	{ tagname => 'etd_ms:creator', eprint_fieldname => 'creators_name', type => 'name', multiple => 1},
	{ tagname => 'etd_ms:subject', eprint_fieldname => 'keywords', type => 'simple_text', include_null_value => 1 },
	{ tagname => 'etd_ms:description', eprint_fieldname => 'abstract', type => 'simple_text' },
	{ tagname => 'etd_ms:publisher', eprint_fieldname => 'institution', type => 'simple_text' },
	{ tagname => 'etd_ms:contributor', eprint_fieldname => 'thesis_advisors_name', type => 'name', opts => { role => 'advisor' }, multiple => 1}, 
	{ tagname => 'etd_ms:date', eprint_fieldname => 'date', type => 'simple_text' },
	{ tagname => 'etd_ms:type', type=> 'constant', value => "Electronic Thesis or Dissertation" },
	{ tagname => 'etd_ms:identifier', type => 'function', function => 'generate_etd_ms_item_identifier' }, 
	{ tagname => 'null', type => 'function', function => 'generate_etd_ms_document_tags' },
	{ tagname => 'etd_ms:degree', type => 'compound', parts => [
		{ tagname => 'etd_ms:name', type => 'simple_text', eprint_fieldname => 'thesis_degree_name' },
		{ tagname => 'etd_ms:level', type => 'simple_text', eprint_fieldname => 'thesis_type' },
		{ tagname => 'etd_ms:discipline', type => 'simple_text', eprint_fieldname => 'department' },
		{ tagname => 'etd_ms:grantor', type => 'simple_text', eprint_fieldname => 'institution' },
	] },
];

Retrieving values from this config file in an export plugin under /plugins/EPrints/Plugin/Export/example.pm

               my $fields = $session->get_conf('etd_ms','fields');					
               foreach my $field_conf (@{$fields})
		{
		   my $tags = $plugin->generate_tag($eprint, $field_conf);			
		   foreach my $tag (@{$tags})
		   {
					push @dcdata, ($tag) if $tag; 
		   }
		}

Supporting function that returns an arrayref

sub generate_tag {
	my ($plugin, $eprint, $field_conf) = @_;

	#Constant value
	if ($field_conf->{type} eq 'constant')
	{
		return $plugin->generate_constant_tag($eprint, $field_conf);
	}
}

Supporting function that generates a tag

sub generate_constant_tag
{
	my ($plugin, $eprint, $field_conf) = @_;

	my $tag = $plugin->_simple_tag($field_conf, $field_conf->{value});

	return [ $tag ];
}