Changeset 22451

Show
Ignore:
Timestamp:
20.07.2010 15:18:11 (9 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

Files:
1 modified

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        }