added frec which returns first occurence of record
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 3 Nov 2007 12:37:43 +0000 (12:37 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 3 Nov 2007 12:37:43 +0000 (12:37 +0000)
as scalar (for eq/ne comparison and things like that)

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@979 07558da8-63fa-0310-ba24-9fe276d99e06

lib/WebPAC/Normalize.pm

index 599726d..97759a9 100644 (file)
@@ -15,6 +15,7 @@ use Exporter 'import';
        marc_original_order
 
        rec1 rec2 rec
+       frec
        regex prefix suffix surround
        first lookup join_with
        save_into_lookup
@@ -75,7 +76,7 @@ Return data structure
        marc_encoding => 'utf-8',
        config => $config,
        load_row_coderef => sub {
-               my ($database,$input,$mfn) = shift;
+               my ($database,$input,$mfn) = @_;
                $store->load_row( database => $database, input => $input, id => $mfn );
        },
   );
@@ -101,6 +102,9 @@ sub data_structure {
        die "need row argument" unless ($arg->{row});
        die "need normalisation argument" unless ($arg->{rules});
 
+       # FIXME load this conditionally
+#      use WebPAC::Normalize::ISBN;
+
        no strict 'subs';
        _set_lookup( $arg->{lookup} ) if defined($arg->{lookup});
        _set_rec( $arg->{row} );
@@ -108,9 +112,6 @@ sub data_structure {
        _clean_ds( %{ $arg } );
        $load_row_coderef = $arg->{load_row_coderef};
 
-       # FIXME load this conditionally
-       use WebPAC::Normalize::ISBN;
-
        eval "$arg->{rules}";
        die "error evaling $arg->{rules}: $@\n" if ($@);
 
@@ -171,6 +172,9 @@ my ($out, $marc_record, $marc_encoding, $marc_repeatable_subfield, $marc_indicat
 my ($marc_record_offset, $marc_fetch_offset) = (0, 0);
 
 sub _get_ds {
+
+warn "## out = ",dump($out);
+
        return $out;
 }
 
@@ -997,6 +1001,12 @@ return scalar, not array.
 
 =cut
 
+sub frec {
+       my @out = rec(@_);
+       warn "rec(",dump(@_),") has more than one return value, ignoring\n" if $#out > 0;
+       return shift @out;
+}
+
 sub rec {
        my @out;
        if ($#_ == 0) {