@@ -476,7 +476,7 @@ def rcdataLessThanSignState(self):
476476 def rcdataEndTagOpenState (self ):
477477 data = self .stream .char ()
478478 if data in asciiLetters :
479- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
479+ self .temporaryBuffer += data
480480 self .state = self .rcdataEndTagNameState
481481 else :
482482 self .tokenQueue .append (Characters ("</" ))
@@ -485,20 +485,21 @@ def rcdataEndTagOpenState(self):
485485 return True
486486
487487 def rcdataEndTagNameState (self ):
488- appropriate = self .currentToken .name == self .temporaryBuffer
488+ name = self .temporaryBuffer .translate (asciiUpper2Lower )
489+ appropriate = self .currentToken and self .currentToken .name == name
489490 data = self .stream .char ()
490491 if data in spaceCharacters and appropriate :
491- self .currentToken = EndTag (name = self . temporaryBuffer )
492+ self .currentToken = EndTag (name = name )
492493 self .state = self .beforeAttributeNameState
493494 elif data == "/" and appropriate :
494- self .currentToken = EndTag (name = self . temporaryBuffer )
495+ self .currentToken = EndTag (name = name )
495496 self .state = self .selfClosingStartTagState
496497 elif data == ">" and appropriate :
497- self .currentToken = EndTag (name = self . temporaryBuffer )
498+ self .currentToken = EndTag (name = name )
498499 self .emitCurrentToken ()
499500 self .state = self .dataState
500501 elif data in asciiLetters :
501- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
502+ self .temporaryBuffer += data
502503 else :
503504 self .tokenQueue .append (Characters ("</" + self .temporaryBuffer ))
504505 self .stream .unget (data )
@@ -519,7 +520,7 @@ def rawtextLessThanSignState(self):
519520 def rawtextEndTagOpenState (self ):
520521 data = self .stream .char ()
521522 if data in asciiLetters :
522- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
523+ self .temporaryBuffer += data
523524 self .state = self .rawtextEndTagNameState
524525 else :
525526 self .tokenQueue .append (Characters ("</" ))
@@ -528,20 +529,21 @@ def rawtextEndTagOpenState(self):
528529 return True
529530
530531 def rawtextEndTagNameState (self ):
531- appropriate = self .currentToken .name == self .temporaryBuffer
532+ name = self .temporaryBuffer .translate (asciiUpper2Lower )
533+ appropriate = self .currentToken and self .currentToken .name == name
532534 data = self .stream .char ()
533535 if data in spaceCharacters and appropriate :
534- self .currentToken = EndTag (name = self . temporaryBuffer )
536+ self .currentToken = EndTag (name = name )
535537 self .state = self .beforeAttributeNameState
536538 elif data == "/" and appropriate :
537- self .currentToken = EndTag (name = self . temporaryBuffer )
539+ self .currentToken = EndTag (name = name )
538540 self .state = self .selfClosingStartTagState
539541 elif data == ">" and appropriate :
540- self .currentToken = EndTag (name = self . temporaryBuffer )
542+ self .currentToken = EndTag (name = name )
541543 self .emitCurrentToken ()
542544 self .state = self .dataState
543545 elif data in asciiLetters :
544- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
546+ self .temporaryBuffer += data
545547 else :
546548 self .tokenQueue .append (Characters ("</" + self .temporaryBuffer ))
547549 self .stream .unget (data )
@@ -565,7 +567,7 @@ def scriptDataLessThanSignState(self):
565567 def scriptDataEndTagOpenState (self ):
566568 data = self .stream .char ()
567569 if data in asciiLetters :
568- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
570+ self .temporaryBuffer += data
569571 self .state = self .scriptDataEndTagNameState
570572 else :
571573 self .tokenQueue .append (Characters ("</" ))
@@ -574,20 +576,21 @@ def scriptDataEndTagOpenState(self):
574576 return True
575577
576578 def scriptDataEndTagNameState (self ):
577- appropriate = self .currentToken .name == self .temporaryBuffer
579+ name = self .temporaryBuffer .translate (asciiUpper2Lower )
580+ appropriate = self .currentToken and self .currentToken .name == name
578581 data = self .stream .char ()
579582 if data in spaceCharacters and appropriate :
580- self .currentToken = EndTag (name = self . temporaryBuffer )
583+ self .currentToken = EndTag (name = name )
581584 self .state = self .beforeAttributeNameState
582585 elif data == "/" and appropriate :
583- self .currentToken = EndTag (name = self . temporaryBuffer )
586+ self .currentToken = EndTag (name = name )
584587 self .state = self .selfClosingStartTagState
585588 elif data == ">" and appropriate :
586- self .currentToken = EndTag (name = self . temporaryBuffer )
589+ self .currentToken = EndTag (name = name )
587590 self .emitCurrentToken ()
588591 self .state = self .dataState
589592 elif data in asciiLetters :
590- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
593+ self .temporaryBuffer += data
591594 else :
592595 self .tokenQueue .append (Characters ("</" + self .temporaryBuffer ))
593596 self .stream .unget (data )
@@ -676,7 +679,7 @@ def scriptDataEscapedLessThanSignState(self):
676679 self .state = self .scriptDataEscapedEndTagOpenState
677680 elif data in asciiLetters :
678681 self .tokenQueue .append (Characters ("<" + data ))
679- self .temporaryBuffer = data . translate ( asciiUpper2Lower )
682+ self .temporaryBuffer = data
680683 self .state = self .scriptDataDoubleEscapeStartState
681684 else :
682685 self .tokenQueue .append (Characters ("<" ))
@@ -687,7 +690,7 @@ def scriptDataEscapedLessThanSignState(self):
687690 def scriptDataEscapedEndTagOpenState (self ):
688691 data = self .stream .char ()
689692 if data in asciiLetters :
690- self .temporaryBuffer = data . translate ( asciiUpper2Lower )
693+ self .temporaryBuffer = data
691694 self .state = self .scriptDataEscapedEndTagNameState
692695 else :
693696 self .tokenQueue .append (Characters ("</" ))
@@ -696,20 +699,21 @@ def scriptDataEscapedEndTagOpenState(self):
696699 return True
697700
698701 def scriptDataEscapedEndTagNameState (self ):
699- appropriate = self .currentToken .name == self .temporaryBuffer
702+ name = self .temporaryBuffer .translate (asciiUpper2Lower )
703+ appropriate = self .currentToken and self .currentToken .name == name
700704 data = self .stream .char ()
701705 if data in spaceCharacters and appropriate :
702- self .currentToken = EndTag (name = self . temporaryBuffer )
706+ self .currentToken = EndTag (name = name )
703707 self .state = self .beforeAttributeNameState
704708 elif data == "/" and appropriate :
705- self .currentToken = EndTag (name = self . temporaryBuffer )
709+ self .currentToken = EndTag (name = name )
706710 self .state = self .selfClosingStartTagState
707711 elif data == ">" and appropriate :
708- self .currentToken = EndTag (name = self . temporaryBuffer )
712+ self .currentToken = EndTag (name = name )
709713 self .emitCurrentToken ()
710714 self .state = self .dataState
711715 elif data in asciiLetters :
712- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
716+ self .temporaryBuffer += data
713717 else :
714718 self .tokenQueue .append (Characters ("</" + self .temporaryBuffer ))
715719 self .stream .unget (data )
@@ -720,13 +724,13 @@ def scriptDataDoubleEscapeStartState(self):
720724 data = self .stream .char ()
721725 if data in (spaceCharacters | frozenset (("/" , ">" ))):
722726 self .tokenQueue .append (Characters (data ))
723- if self .temporaryBuffer == "script" :
727+ if self .temporaryBuffer . lower () == "script" :
724728 self .state = self .scriptDataDoubleEscapedState
725729 else :
726730 self .state = self .scriptDataEscapedState
727731 elif data in asciiLetters :
728732 self .tokenQueue .append (Characters (data ))
729- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
733+ self .temporaryBuffer += data
730734 else :
731735 self .stream .unget (data )
732736 self .state = self .scriptDataEscapedState
@@ -807,13 +811,13 @@ def scriptDataDoubleEscapeEndState(self):
807811 data = self .stream .char ()
808812 if data in (spaceCharacters | frozenset (("/" , ">" ))):
809813 self .tokenQueue .append (Characters (data ))
810- if self .temporaryBuffer == "script" :
814+ if self .temporaryBuffer . lower () == "script" :
811815 self .state = self .scriptDataEscapedState
812816 else :
813817 self .state = self .scriptDataDoubleEscapedState
814818 elif data in asciiLetters :
815819 self .tokenQueue .append (Characters (data ))
816- self .temporaryBuffer += data . translate ( asciiUpper2Lower )
820+ self .temporaryBuffer += data
817821 else :
818822 self .stream .unget (data )
819823 self .state = self .scriptDataDoubleEscapedState
@@ -1234,7 +1238,7 @@ def beforeDoctypeNameState(self):
12341238 self .tokenQueue .append (self .currentToken )
12351239 self .state = self .dataState
12361240 else :
1237- self .currentToken .name = data
1241+ self .currentToken .name = data . translate ( asciiUpper2Lower )
12381242 self .state = self .doctypeNameState
12391243 return True
12401244
0 commit comments