make TEI-PS parser package variables safe for multiple invocations. Fixes #10
tla [Fri, 25 Oct 2013 14:14:13 +0000 (16:14 +0200)]
base/lib/Text/Tradition/Parser/TEI.pm
base/t/text_tradition_parser_tei.t

index 3b0649f..85e9f64 100644 (file)
@@ -67,6 +67,17 @@ if( $t ) {
     is( scalar $t->collation->paths, 361, "Collation has all paths" );
 }
 
+# Try to re-parse it, ensure we can use the parser twice in the same Perl
+# invocation
+
+my $t2 = Text::Tradition->new( 
+    'name'  => 'inline', 
+    'input' => 'TEI',
+    'file'  => $par_seg,
+    );
+
+is( ref( $t2 ), 'Text::Tradition', "Parsed parallel-segmentation TEI again" );
+
 =end testing
 
 =cut
@@ -81,10 +92,11 @@ my $app_count;          # Keep track of how many apps we have
 
 # Would really like to do this with varname variables, but apparently this
 # is considered a bad idea.  The long way round then.
-my( $LISTWIT, $WITNESS, $TEXT, $W, $SEG, $APP, $RDG, $LEM ) 
-    = ( 'listWit', 'witness', 'text', 'w', 'seg', 'app', 'rdg', 'lem' );
+my( $LISTWIT, $WITNESS, $TEXT, $W, $SEG, $APP, $RDG, $LEM ); 
 sub _make_tagnames {
     my( $ns ) = @_;
+    ( $LISTWIT, $WITNESS, $TEXT, $W, $SEG, $APP, $RDG, $LEM ) 
+       = ( 'listWit', 'witness', 'text', 'w', 'seg', 'app', 'rdg', 'lem' );
     if( $ns ) {
         $LISTWIT = "$ns:$LISTWIT";
         $WITNESS = "$ns:$WITNESS";
index 2fb33a8..7ae1f8f 100644 (file)
@@ -25,6 +25,17 @@ if( $t ) {
     is( scalar $t->collation->readings, 311, "Collation has all readings" );
     is( scalar $t->collation->paths, 361, "Collation has all paths" );
 }
+
+# Try to re-parse it, ensure we can use the parser twice in the same Perl
+# invocation
+
+my $t2 = Text::Tradition->new( 
+    'name'  => 'inline', 
+    'input' => 'TEI',
+    'file'  => $par_seg,
+    );
+
+is( ref( $t2 ), 'Text::Tradition', "Parsed parallel-segmentation TEI again" );
 }