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);