Ignore:
Timestamp:
2010-07-20T15:18:11+12:00 (14 years ago)
Author:
kjdon
Message:

added metadata_field_separator option. if set eg to ;, will split all metadata on this character. used for multivalued metadata

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugins/EmbeddedMetadataPlugin.pm

    r22448 r22451  
    4444
    4545my $arguments =
    46     [ ];
     46    [ { 'name' => "metadata_field_separator",
     47    'desc' => "{HTMLPlugin.metadata_field_separator}",
     48    'type' => "string",
     49    'deft' => "" }
     50
     51];
    4752
    4853
     
    105110    my $metadata_count = 0;
    106111   
     112    my $separator = $self->{'metadata_field_separator'};
     113    if ($separator eq "") {
     114    undef $separator;
     115    }
     116
    107117    my @group_list = Image::ExifTool::GetAllGroups(0);
    108118    foreach my $group (@group_list)
     
    132142        }
    133143
    134         my $array = 0;
     144        my $metadata_done = 0;
    135145        if (ref $value eq 'SCALAR') {
    136146           
     
    146156        }
    147157        elsif (ref $value eq 'ARRAY') {
    148             $array = 1;
     158            $metadata_done = 1;
    149159            foreach my $v (@$value) {
    150160            push (@{$exif_metadata{$field}}, $self->gsSafe($v));
    151             #print STDERR "**** adding array $field: $v\n";
    152161            ++$metadata_count;
    153162            }
    154163        }
    155         if (!$array) {
     164        else {
     165            if (defined $separator) {
     166            my @vs = split($separator, $value);
     167            $metadata_done = 1;
     168            foreach my $v (@vs) {
     169                if ($v =~ /\S/) {
     170                push (@{$exif_metadata{$field}}, $self->gsSafe($v));
     171                ++$metadata_count;
     172                }
     173            }
     174            }
     175        }
     176        if (!$metadata_done) {
    156177            push (@{$exif_metadata{$field}}, $self->gsSafe($value));
    157             #print STDERR "**** adding $field: $value\n";
    158            
    159178            ++$metadata_count;
    160179        }
Note: See TracChangeset for help on using the changeset viewer.