@@ -71,6 +71,10 @@ var DATA_STATE = 'DATA_STATE',
71
71
COMMENT_START_STATE = 'COMMENT_START_STATE' ,
72
72
COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE' ,
73
73
COMMENT_STATE = 'COMMENT_STATE' ,
74
+ COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE' ,
75
+ COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE' ,
76
+ COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE' ,
77
+ COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE' ,
74
78
COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE' ,
75
79
COMMENT_END_STATE = 'COMMENT_END_STATE' ,
76
80
COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE' ,
@@ -1631,6 +1635,11 @@ _[COMMENT_STATE] = function commentState(cp) {
1631
1635
if ( cp === $ . HYPHEN_MINUS )
1632
1636
this . state = COMMENT_END_DASH_STATE ;
1633
1637
1638
+ else if ( cp === $ . LESS_THAN_SIGN ) {
1639
+ this . currentToken . data += '<' ;
1640
+ this . state = COMMENT_LESS_THAN_SIGN_STATE ;
1641
+ }
1642
+
1634
1643
else if ( cp === $ . NULL )
1635
1644
this . currentToken . data += UNICODE . REPLACEMENT_CHARACTER ;
1636
1645
@@ -1644,6 +1653,54 @@ _[COMMENT_STATE] = function commentState(cp) {
1644
1653
} ;
1645
1654
1646
1655
1656
+ // Comment less-than sign state
1657
+ //------------------------------------------------------------------
1658
+ _ [ COMMENT_LESS_THAN_SIGN_STATE ] = function commentLessThanSignState ( cp ) {
1659
+ if ( cp === $ . EXCLAMATION_MARK ) {
1660
+ this . currentToken . data += '!' ;
1661
+ this . state = COMMENT_LESS_THAN_SIGN_BANG_STATE ;
1662
+ }
1663
+
1664
+ else if ( cp === $ . LESS_THAN_SIGN )
1665
+ this . currentToken . data += '!' ;
1666
+
1667
+ else
1668
+ this . _reconsumeInState ( COMMENT_STATE ) ;
1669
+ } ;
1670
+
1671
+
1672
+ // Comment less-than sign bang state
1673
+ //------------------------------------------------------------------
1674
+ _ [ COMMENT_LESS_THAN_SIGN_BANG_STATE ] = function commentLessThanSignBangState ( cp ) {
1675
+ if ( cp === $ . HYPHEN_MINUS )
1676
+ this . state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE ;
1677
+
1678
+ else
1679
+ this . _reconsumeInState ( COMMENT_STATE ) ;
1680
+ } ;
1681
+
1682
+
1683
+ // Comment less-than sign bang dash state
1684
+ //------------------------------------------------------------------
1685
+ _ [ COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE ] = function commentLessThanSignBangDashState ( cp ) {
1686
+ if ( cp === $ . HYPHEN_MINUS )
1687
+ this . state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE ;
1688
+
1689
+ else
1690
+ this . _reconsumeInState ( COMMENT_END_DASH_STATE ) ;
1691
+ } ;
1692
+
1693
+
1694
+ // Comment less-than sign bang dash dash state
1695
+ //------------------------------------------------------------------
1696
+ _ [ COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE ] = function commentLessThanSignBangDashDashState ( cp ) {
1697
+ if ( cp !== $ . GREATER_THAN_SIGN && cp !== $ . EOF )
1698
+ this . _err ( ERR . nestedComment ) ;
1699
+
1700
+ this . _reconsumeInState ( COMMENT_END_STATE ) ;
1701
+ } ;
1702
+
1703
+
1647
1704
// Comment end dash state
1648
1705
//------------------------------------------------------------------
1649
1706
_ [ COMMENT_END_DASH_STATE ] = function commentEndDashState ( cp ) {
0 commit comments