Fix attributes with no value following '='.
[tx] / htmlparser.py
index 98da819..cb10ad7 100644 (file)
@@ -55,15 +55,15 @@ reEndOfTag = re.compile( # <CHAR*> (<QUOTED> <CHAR*>)* '>'
 )
 reAttr = re.compile(
        '([a-z_][a-z0-9._-]*(?::[a-z_][a-z0-9._-]*)?)' # name
-       '(?:'
+       '('
        r'\s*=\s*'         # spaces then =
        '('
-       '[^\'"\\s]+'       # anything but spaces and quote characters
+       '[^\'"\\s=]+'      # anything but spaces and quote characters
        '|'
        '"[^"]*"'          # double-quote string
        '|'
        "'[^']*'"          # single-quote string
-       ')'
+       ')?'
        ')?' , re.I
 )
 reEntity = re.compile(
@@ -131,11 +131,13 @@ def _parseAttr( s ) :
                r = reAttr.search( s , p )
                if r is None :
                        break
-               k , v = r.groups()
+               k , eq , v = r.groups()
                if v :
                        if v[ 0 ] == "'" or v[ 0 ] == '"' :
                                v = v[ 1 : -1 ]
                        v = _decodeAttr( v )
+               elif eq :
+                       v = ''
                attrs.append( ( k , v ) )
                p = r.end( 0 )
        return attrs