misc
[migration-tools.git] / Equinox-Migration / lib / Equinox / Migration / MapDrivenMARCXMLProc.pm
index 666551f..805d70c 100644 (file)
@@ -45,6 +45,7 @@ sub new {
     my ($class, %args) = @_;
 
     my $self = bless { mods => { multi    => {},
+                                 bib      => {},
                                  required => {},
                                },
                        data => { recs => undef, # X::T record objects
@@ -158,7 +159,11 @@ sub process_subs {
     my $dataf = $self->{data}{crec}{tags}[-1];
     my $field = $map->field($tag, $code);
 
-    # handle modifiers
+    # test filters
+    for my $filter ( @{$map->filters($field)} ) {
+        return if ($sub->text =~ /$filter/i);
+    }
+    # handle multi modifier
     if (my $mods = $map->mods($field)) {
         if ($mods->{multi}) {
             my $name = $tag . $code;
@@ -167,8 +172,11 @@ sub process_subs {
         }
     }
 
+    # if this were a multi field, it would be handled already. make sure its a singleton
     die "Multiple occurances of a non-multi field: $tag$code at rec ",
       ($self->{data}{rptr} + 1),"\n" if (defined $dataf->{uni}{$code});
+
+    # everything seems okay
     $dataf->{uni}{$code} = $sub->text;
 }