--- trunk/lib/Biblio/Isis.pm 2006/07/07 21:11:01 50 +++ trunk/lib/Biblio/Isis.pm 2006/07/08 16:03:52 56 @@ -117,7 +117,7 @@ =item debug -Dump a B of debugging output. +Dump a B of debugging output even at level 1. For even more increase level. =back @@ -385,6 +385,24 @@ return $self->{'record'}; } +=head2 mfn + +Returns current MFN position + + my $mfn = $isis->mfn; + +=cut + +# This function should be simple return $self->{current_mfn}, +# but if new is called with _hack_mfn it becomes setter. +# It's useful in tests when setting $isis->{record} directly + +sub mfn { + my $self = shift; + return $self->{current_mfn}; +}; + + =head2 to_ascii Returns ASCII output of record with specified MFN @@ -473,12 +491,26 @@ This method will also create additional field C<000> with MFN. +There is also more elaborative way to call C like this: + + my $hash = $isis->to_hash({ + mfn => 42, + include_empty_subfields => 1, + }); + =cut sub to_hash { my $self = shift; + my $mfn = shift || confess "need mfn!"; + my $arg; + + if (ref($mfn) eq 'HASH') { + $arg = $mfn; + $mfn = $arg->{mfn} || confess "need mfn in arguments"; + } # init record to include MFN as field 000 my $rec = { '000' => [ $mfn ] }; @@ -504,8 +536,13 @@ foreach my $t (split(/\^/,$l)) { next if (! $t); my ($sf,$v) = (substr($t,0,1), substr($t,1)); - warn "### $k^$sf:$v",$/ if ($self->{debug} > 1); + # FIXME make this option ! + next unless ($v); +# warn "### $k^$sf:$v",$/ if ($self->{debug} > 1); + + # FIXME array return optional, by default unroll to ' ; ' if (ref( $val->{$sf} ) eq 'ARRAY') { + push @{ $val->{$sf} }, $v; } elsif (defined( $val->{$sf} )) { # convert scalar field to array @@ -631,6 +668,19 @@ tested this against ouput of one C-based application, but I don't know any details about it's version. +=head1 VERSIONS + +You can find version dependencies documented here + +=over 8 + +=item 0.20 + +Added C<< $isis->mfn >>, support for repeatable subfields and +C<< $isis->to_hash({ mfn => 42, ... }) >> calling convention + +=back + =head1 AUTHOR Dobrica Pavlinusic