Changeset 8737
- Timestamp:
- 2004-12-03T17:32:01+13:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/perllib/plugins/RecPlug.pm
r8716 r8737 98 98 use util; 99 99 100 use File::Basename; 101 100 102 101 103 BEGIN { … … 159 161 } 160 162 163 $self->{'subdir_extrametakeys'} = {}; 164 161 165 return bless $self, $class; 162 166 } … … 248 252 my %extrametadata; # maps from filespec to extra metadata keys 249 253 my @extrametakeys; # keys of %extrametadata in order read 254 255 my $dirsepre = &util::get_re_dirsep(); 256 my $dirsep = &util::get_dirsep(); 257 my $local_dirname = $dirname; 258 $local_dirname =~ s/^$base_dir($dirsepre)//; 259 $local_dirname .= $dirsep; 260 261 if (defined $self->{'subdir_extrametakeys'}->{$local_dirname}) { 262 print STDERR "**** Matching on dirname = $local_dirname\n"; 263 my $extrakeys = $self->{'subdir_extrametakeys'}->{$local_dirname}; 264 foreach my $ek (@$extrakeys) { 265 my $extrakeys_re = $ek->{'re'}; 266 my $extrakeys_md = $ek->{'md'}; 267 push(@extrametakeys,$extrakeys_re); 268 $extrametadata{$extrakeys_re} = $extrakeys_md; 269 } 270 delete($self->{'subdir_extrametakeys'}->{$local_dirname}); 271 } 250 272 251 273 if ($read_metadata_files) { … … 280 302 } 281 303 304 # filter out any extrametakeys that mention subdirectories and store 305 # for later use (i.e. when that sub-directory is being processed) 306 307 foreach my $ek (@extrametakeys) { 308 my ($subdir_re,$extrakey_dir) = &File::Basename::fileparse($ek); 309 $extrakey_dir =~ s/\\\./\./g; # remove RE syntax 310 311 my $dirsep = &util::get_dirsep(); 312 313 if ($ek =~ m/$dirsep/) { # specifies at least one directory 314 my $md = $extrametadata{$ek}; 315 316 my $subdir_extrametakeys = $self->{'subdir_extrametakeys'}; 317 print STDERR "*** pushing on $subdir_re for $extrakey_dir\n"; 318 319 my $subdir_rec = { 're' => $subdir_re, 'md' => $md }; 320 push(@{$subdir_extrametakeys->{$extrakey_dir}},$subdir_rec); 321 } 322 } 282 323 283 324 # import each of the files in the directory … … 501 542 # Afterwards $mdref1 will be updated, and $mdref2 will be unchanged. 502 543 # 503 # We have to be acreful about the way we merge metadata when one metadata544 # We have to be careful about the way we merge metadata when one metadata 504 545 # structure is in "override" mode and one is in "merge" mode. In fact, we 505 546 # use the mode from the second structure, $mdref2, because it is generally … … 509 550 # Another issue is the use of references to pass metadata around. If we 510 551 # simply copy one metadata structure reference to another, then we're 511 # effectively just rcopyinga pointer, and changes to the new referene552 # effectively just copyinga pointer, and changes to the new referene 512 553 # will affect the old (copied) one also. This also applies to ARRAY 513 554 # references used as metadata element values (hence the "clonedata"
Note:
See TracChangeset
for help on using the changeset viewer.