--- trunk/lib/WebPAC/Normalize.pm 2006/09/11 14:29:01 669 +++ trunk/lib/WebPAC/Normalize.pm 2006/09/25 15:26:12 707 @@ -15,6 +15,7 @@ rec1 rec2 rec regex prefix suffix surround first lookup join_with + save_into_lookup split_rec_on /; @@ -36,11 +37,11 @@ =head1 VERSION -Version 0.19 +Version 0.20 =cut -our $VERSION = '0.19'; +our $VERSION = '0.20'; =head1 SYNOPSIS @@ -66,14 +67,14 @@ Return data structure my $ds = WebPAC::Normalize::data_structure( - lookup => $lookup->lookup_hash, + lookup => $lookup_variable, row => $row, rules => $normalize_pl_config, marc_encoding => 'utf-8', config => $config, ); -Options C, C, C and C are mandatory while all +Options C, C and C are mandatory while all other are optional. This function will B if normalizastion can't be evaled. @@ -90,9 +91,9 @@ die "need normalisation argument" unless ($arg->{rules}); no strict 'subs'; - _set_lookup( $arg->{lookup} ); + _set_lookup( $arg->{lookup} ) if (defined( $arg->{lookup} )); _set_rec( $arg->{row} ); - _set_config( $arg->{config} ); + _set_config( $arg->{config} ) if (defined( $arg->{config} )); _clean_ds( %{ $arg } ); eval "$arg->{rules}"; die "error evaling $arg->{rules}: $@\n" if ($@); @@ -186,6 +187,18 @@ $lookup = shift; } +=head2 _get_lookup + +Get current lookup hash + + my $lookup = _get_lookup(); + +=cut + +sub _get_lookup { + return $lookup; +} + =head2 _get_marc_fields Get all fields defined by calls to C @@ -931,6 +944,8 @@ @v = lookup( $v ); @v = lookup( @v ); +FIXME B + =cut sub lookup { @@ -943,6 +958,29 @@ } } +=head2 save_into_lookup + +Save value into lookup. + + save_into_lookup($key,sub { + # code which produce one or more values + }); + +This function shouldn't be called directly, it's called from code created by L. + +=cut + +sub save_into_lookup { + my ($k,$coderef) = @_; + die "save_into_lookup needs key" unless defined($k); + die "save_into_lookup needs CODE" unless ( defined($coderef) && ref($coderef) eq 'CODE' ); + my $mfn = $rec->{'000'}->[0] || die "mfn not defined or zero"; + foreach my $v ( $coderef->() ) { + $lookup->{$k}->{$v}->{$mfn}++; + warn "# lookup $k $v $mfn saved\n"; # if ($debug > 1); + } +} + =head2 config Consult config values stored in C