Perl 101 for EPrints: Difference between revisions
⧼vector-appearance-label⧽
| 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 ];
}