dtdparse-commits
[Top] [All Lists]

[Dtdparse-commits] CVS: dtdparse/XML/DTDParse DTD.pm,1.5,1.6

2005-06-17 14:53:14
Update of dtdparse/XML/DTDParse
Modified Files:
	DTD.pm 
Log Message:
Fixing the following bugs:
  . Tag minimization look-ahead bug with empty parm entity reference.
  . Setting of debug level from command-line.
  . ATTLIST parsing does not support ',' as enumeration list separator.
  . Tokenizer scarfing up parm entity references.


======================================================================
FILE: dtdparse/XML/DTDParse/DTD.pm
<http://cvs.sourceforge.net/viewcvs.py/dtdparse/*checkout*/dtdparse/XML/DTDParse/DTD.pm?rev=1.6>

<http://cvs.sourceforge.net/viewcvs.py/dtdparse/dtdparse/XML/DTDParse/DTD.pm.diff?r1=1.5&r2=1.6&diff_format=h>
--- DTD.pm	12 Mar 2003 13:47:01 -0000	1.5
+++ DTD.pm	17 Jun 2005 21:52:14 -0000	1.6
@@ -511,5 +511,5 @@
     $self->{'NOTN'} = {};
     $self->{'VERBOSE'} = $param{'Verbose'} || $param{'Debug'};
-    $self->{'DEBUG'} = $param{'Debug'};
+    $self->debug($param{'Debug'});
     $self->{'TITLE'} = $param{'Title'};
     $self->{'UNEXPANDED_CONTENT'}
@@ -638,8 +638,12 @@
     my $self = shift;
     my $val = shift;
-    my $dbg = $self->{'DEBUG'};
-
-    $self->{'DEBUG'} = $val if defined($val);
-
+    my $dbg = $debug;
+ 
+    if (defined($val)) {
+        $debug = $val;
+        if (ref($self)) {
+            $self->{'DEBUG'} = $debug;
+        }
+    }
     return $dbg;
 }
@@ -920,8 +924,6 @@
             $dtd = $rest . $dtd;
             ($etagm, $dtd) = $self->next_token($dtd);
-        } elsif ($expand eq '') {
-            # nop
         } else {
-            $dtd = $tok . $dtd;
+            $dtd = $tok . $dtd  if $expand =~ /\S/;
         }
     } elsif ($tok =~ /^[\-\o]/is) {
@@ -1051,5 +1053,5 @@
             ($ntok, $rest) = $self->next_token($enum);
             while ($ntok) {
-                if ($ntok =~ /[\|\(\)]/) {
+                if ($ntok =~ /[,\|\(\)]/) {
                     # nop
                 } else {
@@ -1242,5 +1244,5 @@
     }
 
-    if ($dtd =~ /^\s*([^\s\|\&\,\(\)\[\]\>]+)/s) {
+    if ($dtd =~ /^([^\s\|\&\,\(\)\[\]\>\%]+)/s) {
         # next non-space sequence
         print "TOK: [$1]\n" if $debug > 3;
@@ -1248,4 +1250,10 @@
     }
 
+    if ($dtd =~ /^(\%)/s) {
+        # lone % (for param entity declarations)
+        print "TOK: [$1]\n" if $debug > 3;
+        return ($1, $');
+    }
+
     print "TOK: <<none>>\n" if $debug > 3;
     return (undef, $dtd);