added $isis->mfn, some documentation about version compatibility and few FIXME markers
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 7 Jul 2006 23:45:12 +0000 (23:45 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 7 Jul 2006 23:45:12 +0000 (23:45 +0000)
git-svn-id: file:///home/dpavlin/svn/Biblio-Isis/trunk@54 4670fa4d-42ec-0310-ab5b-a66af6943492

lib/Biblio/Isis.pm
t/2_isis.t

index 76f20ba..b11e856 100644 (file)
@@ -117,7 +117,7 @@ Filter code ref which will be used before data is converted to hash.
 
 =item debug
 
-Dump a B<lot> of debugging output.
+Dump a B<lot> of debugging output even at level 1. For even more increase level.
 
 =back
 
@@ -385,6 +385,24 @@ sub fetch {
        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
@@ -504,8 +522,13 @@ sub to_hash {
                                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 +654,18 @@ module with databases from programs other than WinIsis and IsisMarc. I had
 tested this against ouput of one C<isis.dll>-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 >> and support for repeatable subfields
+
+=back
+
 =head1 AUTHOR
 
        Dobrica Pavlinusic
index 24f3b42..11fd1aa 100755 (executable)
@@ -3,7 +3,7 @@
 use strict;
 use blib;
 
-use Test::More tests => 112;
+use Test::More tests => 124;
 use File::Spec;
 
 BEGIN {
@@ -18,7 +18,7 @@ BEGIN {
 }
 
 
-my $debug = shift @ARGV;
+my $debug = length( shift @ARGV );
 my $isis;
 
 my $path_winisis = File::Spec->catfile('data', 'winisis', 'BIBL');
@@ -111,8 +111,7 @@ sub test_data {
                my $rec;
                ok($rec = $isis->fetch($mfn), "fetch $mfn");
 
-
-               diag "<<<<< rec: ",Dumper( $rec ), "\n>>>>> row:", Dumper( $data->[$mfn-1] ) if ($debug);
+               diag "<<<<< rec = ",Dumper( $rec ), "\n>>>>> data = ", Dumper( $data->[$mfn-1] ) if ($debug);
 
                foreach my $f (keys %{$data->[$mfn-1]}) {
                        my $i = 0;
@@ -123,6 +122,9 @@ sub test_data {
                                $i++;
                        }
                }
+
+               cmp_ok($isis->mfn, '==', $mfn, 'mfn');
+
        }
 
        # test to_ascii
@@ -143,7 +145,7 @@ sub test_data {
 $isis = Biblio::Isis->new (
        isisdb => $path_winisis,
        include_deleted => 1,
-       debug => $debug,
+       debug => $debug > 1 ? ($debug - 1) : 0,
 );
 
 diag "new Biblio::Isis = ", Dumper($isis) if ($debug);
@@ -183,6 +185,9 @@ $isis = Biblio::Isis->new (
 
 ok($isis->fetch(3), "deleted found");
 cmp_ok($isis->{deleted}, '==', 3, "MFN 3 is deleted");
+ok($isis->{record}, "record exists");
+
+diag "record = ",Dumper($isis->{record});
 
 $isis = Biblio::Isis->new (
        isisdb => $path_winisis,
@@ -191,4 +196,20 @@ $isis = Biblio::Isis->new (
 
 ok(! $isis->fetch(3), "deleted not found");
 cmp_ok($isis->{deleted}, '==', 3, "MFN 3 is deleted");
-
+ok(! $isis->{record}, 'no record');
+
+$isis->{record} = {
+       900 => [ '^a900a^b900b^c900c' ],
+       901 => [
+               '^a901a-1^b901b-1^c901c-1',
+               '^a901a-2^b901b-2',
+               '^a901a-3',
+       ],
+       902 => [
+               '^aa1^aa2^aa3^bb1^aa4^bb2^cc1^aa5',
+       ],
+};
+$isis->{current_mfn} = 42;
+
+diag "to_hash = ",Dumper( $isis->to_hash( $isis->mfn ) );
+diag "to_ascii = \n", $isis->to_ascii( $isis->mfn );