Difference between revisions of "Perl 101 for EPrints"
Line 1: | Line 1: | ||
[[category:Documentation_Needed]] | [[category:Documentation_Needed]] | ||
− | + | ===Arrays=== | |
+ | |||
+ | Example of an array defined in a 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 array 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; | ||
+ | } | ||
+ | } |
Revision as of 20:57, 11 June 2015
Arrays
Example of an array defined in a 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 array 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; } }