parse5 7.1.1 → 7.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common/error-codes.d.ts +1 -1
- package/dist/cjs/common/token.d.ts +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/parser/formatting-element-list.d.ts +1 -1
- package/dist/cjs/parser/index.js +220 -110
- package/dist/cjs/parser/open-element-stack.js +3 -3
- package/dist/cjs/tokenizer/index.js +2 -1
- package/dist/cjs/tokenizer/preprocessor.js +2 -1
- package/dist/cjs/tree-adapters/default.d.ts +4 -4
- package/dist/common/error-codes.d.ts +1 -1
- package/dist/common/token.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/parser/formatting-element-list.d.ts +1 -1
- package/dist/parser/index.js +220 -110
- package/dist/parser/open-element-stack.js +3 -3
- package/dist/tokenizer/index.js +2 -1
- package/dist/tokenizer/preprocessor.js +2 -1
- package/dist/tree-adapters/default.d.ts +4 -4
- package/package.json +1 -1
package/dist/parser/index.js
CHANGED
|
@@ -459,51 +459,63 @@ export class Parser {
|
|
|
459
459
|
for (let i = this.openElements.stackTop; i >= 0; i--) {
|
|
460
460
|
//Insertion mode reset map
|
|
461
461
|
switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {
|
|
462
|
-
case $.TR:
|
|
462
|
+
case $.TR: {
|
|
463
463
|
this.insertionMode = InsertionMode.IN_ROW;
|
|
464
464
|
return;
|
|
465
|
+
}
|
|
465
466
|
case $.TBODY:
|
|
466
467
|
case $.THEAD:
|
|
467
|
-
case $.TFOOT:
|
|
468
|
+
case $.TFOOT: {
|
|
468
469
|
this.insertionMode = InsertionMode.IN_TABLE_BODY;
|
|
469
470
|
return;
|
|
470
|
-
|
|
471
|
+
}
|
|
472
|
+
case $.CAPTION: {
|
|
471
473
|
this.insertionMode = InsertionMode.IN_CAPTION;
|
|
472
474
|
return;
|
|
473
|
-
|
|
475
|
+
}
|
|
476
|
+
case $.COLGROUP: {
|
|
474
477
|
this.insertionMode = InsertionMode.IN_COLUMN_GROUP;
|
|
475
478
|
return;
|
|
476
|
-
|
|
479
|
+
}
|
|
480
|
+
case $.TABLE: {
|
|
477
481
|
this.insertionMode = InsertionMode.IN_TABLE;
|
|
478
482
|
return;
|
|
479
|
-
|
|
483
|
+
}
|
|
484
|
+
case $.BODY: {
|
|
480
485
|
this.insertionMode = InsertionMode.IN_BODY;
|
|
481
486
|
return;
|
|
482
|
-
|
|
487
|
+
}
|
|
488
|
+
case $.FRAMESET: {
|
|
483
489
|
this.insertionMode = InsertionMode.IN_FRAMESET;
|
|
484
490
|
return;
|
|
485
|
-
|
|
491
|
+
}
|
|
492
|
+
case $.SELECT: {
|
|
486
493
|
this._resetInsertionModeForSelect(i);
|
|
487
494
|
return;
|
|
488
|
-
|
|
495
|
+
}
|
|
496
|
+
case $.TEMPLATE: {
|
|
489
497
|
this.insertionMode = this.tmplInsertionModeStack[0];
|
|
490
498
|
return;
|
|
491
|
-
|
|
499
|
+
}
|
|
500
|
+
case $.HTML: {
|
|
492
501
|
this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;
|
|
493
502
|
return;
|
|
503
|
+
}
|
|
494
504
|
case $.TD:
|
|
495
|
-
case $.TH:
|
|
505
|
+
case $.TH: {
|
|
496
506
|
if (i > 0) {
|
|
497
507
|
this.insertionMode = InsertionMode.IN_CELL;
|
|
498
508
|
return;
|
|
499
509
|
}
|
|
500
510
|
break;
|
|
501
|
-
|
|
511
|
+
}
|
|
512
|
+
case $.HEAD: {
|
|
502
513
|
if (i > 0) {
|
|
503
514
|
this.insertionMode = InsertionMode.IN_HEAD;
|
|
504
515
|
return;
|
|
505
516
|
}
|
|
506
517
|
break;
|
|
518
|
+
}
|
|
507
519
|
}
|
|
508
520
|
}
|
|
509
521
|
this.insertionMode = InsertionMode.IN_BODY;
|
|
@@ -534,11 +546,12 @@ export class Parser {
|
|
|
534
546
|
for (let i = this.openElements.stackTop; i >= 0; i--) {
|
|
535
547
|
const openElement = this.openElements.items[i];
|
|
536
548
|
switch (this.openElements.tagIDs[i]) {
|
|
537
|
-
case $.TEMPLATE:
|
|
549
|
+
case $.TEMPLATE: {
|
|
538
550
|
if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {
|
|
539
551
|
return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };
|
|
540
552
|
}
|
|
541
553
|
break;
|
|
554
|
+
}
|
|
542
555
|
case $.TABLE: {
|
|
543
556
|
const parent = this.treeAdapter.getParentNode(openElement);
|
|
544
557
|
if (parent) {
|
|
@@ -573,52 +586,65 @@ export class Parser {
|
|
|
573
586
|
return;
|
|
574
587
|
}
|
|
575
588
|
switch (this.insertionMode) {
|
|
576
|
-
case InsertionMode.INITIAL:
|
|
589
|
+
case InsertionMode.INITIAL: {
|
|
577
590
|
tokenInInitialMode(this, token);
|
|
578
591
|
break;
|
|
579
|
-
|
|
592
|
+
}
|
|
593
|
+
case InsertionMode.BEFORE_HTML: {
|
|
580
594
|
tokenBeforeHtml(this, token);
|
|
581
595
|
break;
|
|
582
|
-
|
|
596
|
+
}
|
|
597
|
+
case InsertionMode.BEFORE_HEAD: {
|
|
583
598
|
tokenBeforeHead(this, token);
|
|
584
599
|
break;
|
|
585
|
-
|
|
600
|
+
}
|
|
601
|
+
case InsertionMode.IN_HEAD: {
|
|
586
602
|
tokenInHead(this, token);
|
|
587
603
|
break;
|
|
588
|
-
|
|
604
|
+
}
|
|
605
|
+
case InsertionMode.IN_HEAD_NO_SCRIPT: {
|
|
589
606
|
tokenInHeadNoScript(this, token);
|
|
590
607
|
break;
|
|
591
|
-
|
|
608
|
+
}
|
|
609
|
+
case InsertionMode.AFTER_HEAD: {
|
|
592
610
|
tokenAfterHead(this, token);
|
|
593
611
|
break;
|
|
612
|
+
}
|
|
594
613
|
case InsertionMode.IN_BODY:
|
|
595
614
|
case InsertionMode.IN_CAPTION:
|
|
596
615
|
case InsertionMode.IN_CELL:
|
|
597
|
-
case InsertionMode.IN_TEMPLATE:
|
|
616
|
+
case InsertionMode.IN_TEMPLATE: {
|
|
598
617
|
characterInBody(this, token);
|
|
599
618
|
break;
|
|
619
|
+
}
|
|
600
620
|
case InsertionMode.TEXT:
|
|
601
621
|
case InsertionMode.IN_SELECT:
|
|
602
|
-
case InsertionMode.IN_SELECT_IN_TABLE:
|
|
622
|
+
case InsertionMode.IN_SELECT_IN_TABLE: {
|
|
603
623
|
this._insertCharacters(token);
|
|
604
624
|
break;
|
|
625
|
+
}
|
|
605
626
|
case InsertionMode.IN_TABLE:
|
|
606
627
|
case InsertionMode.IN_TABLE_BODY:
|
|
607
|
-
case InsertionMode.IN_ROW:
|
|
628
|
+
case InsertionMode.IN_ROW: {
|
|
608
629
|
characterInTable(this, token);
|
|
609
630
|
break;
|
|
610
|
-
|
|
631
|
+
}
|
|
632
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
611
633
|
characterInTableText(this, token);
|
|
612
634
|
break;
|
|
613
|
-
|
|
635
|
+
}
|
|
636
|
+
case InsertionMode.IN_COLUMN_GROUP: {
|
|
614
637
|
tokenInColumnGroup(this, token);
|
|
615
638
|
break;
|
|
616
|
-
|
|
639
|
+
}
|
|
640
|
+
case InsertionMode.AFTER_BODY: {
|
|
617
641
|
tokenAfterBody(this, token);
|
|
618
642
|
break;
|
|
619
|
-
|
|
643
|
+
}
|
|
644
|
+
case InsertionMode.AFTER_AFTER_BODY: {
|
|
620
645
|
tokenAfterAfterBody(this, token);
|
|
621
646
|
break;
|
|
647
|
+
}
|
|
622
648
|
default:
|
|
623
649
|
// Do nothing
|
|
624
650
|
}
|
|
@@ -630,41 +656,52 @@ export class Parser {
|
|
|
630
656
|
return;
|
|
631
657
|
}
|
|
632
658
|
switch (this.insertionMode) {
|
|
633
|
-
case InsertionMode.INITIAL:
|
|
659
|
+
case InsertionMode.INITIAL: {
|
|
634
660
|
tokenInInitialMode(this, token);
|
|
635
661
|
break;
|
|
636
|
-
|
|
662
|
+
}
|
|
663
|
+
case InsertionMode.BEFORE_HTML: {
|
|
637
664
|
tokenBeforeHtml(this, token);
|
|
638
665
|
break;
|
|
639
|
-
|
|
666
|
+
}
|
|
667
|
+
case InsertionMode.BEFORE_HEAD: {
|
|
640
668
|
tokenBeforeHead(this, token);
|
|
641
669
|
break;
|
|
642
|
-
|
|
670
|
+
}
|
|
671
|
+
case InsertionMode.IN_HEAD: {
|
|
643
672
|
tokenInHead(this, token);
|
|
644
673
|
break;
|
|
645
|
-
|
|
674
|
+
}
|
|
675
|
+
case InsertionMode.IN_HEAD_NO_SCRIPT: {
|
|
646
676
|
tokenInHeadNoScript(this, token);
|
|
647
677
|
break;
|
|
648
|
-
|
|
678
|
+
}
|
|
679
|
+
case InsertionMode.AFTER_HEAD: {
|
|
649
680
|
tokenAfterHead(this, token);
|
|
650
681
|
break;
|
|
651
|
-
|
|
682
|
+
}
|
|
683
|
+
case InsertionMode.TEXT: {
|
|
652
684
|
this._insertCharacters(token);
|
|
653
685
|
break;
|
|
686
|
+
}
|
|
654
687
|
case InsertionMode.IN_TABLE:
|
|
655
688
|
case InsertionMode.IN_TABLE_BODY:
|
|
656
|
-
case InsertionMode.IN_ROW:
|
|
689
|
+
case InsertionMode.IN_ROW: {
|
|
657
690
|
characterInTable(this, token);
|
|
658
691
|
break;
|
|
659
|
-
|
|
692
|
+
}
|
|
693
|
+
case InsertionMode.IN_COLUMN_GROUP: {
|
|
660
694
|
tokenInColumnGroup(this, token);
|
|
661
695
|
break;
|
|
662
|
-
|
|
696
|
+
}
|
|
697
|
+
case InsertionMode.AFTER_BODY: {
|
|
663
698
|
tokenAfterBody(this, token);
|
|
664
699
|
break;
|
|
665
|
-
|
|
700
|
+
}
|
|
701
|
+
case InsertionMode.AFTER_AFTER_BODY: {
|
|
666
702
|
tokenAfterAfterBody(this, token);
|
|
667
703
|
break;
|
|
704
|
+
}
|
|
668
705
|
default:
|
|
669
706
|
// Do nothing
|
|
670
707
|
}
|
|
@@ -693,19 +730,23 @@ export class Parser {
|
|
|
693
730
|
case InsertionMode.IN_SELECT_IN_TABLE:
|
|
694
731
|
case InsertionMode.IN_TEMPLATE:
|
|
695
732
|
case InsertionMode.IN_FRAMESET:
|
|
696
|
-
case InsertionMode.AFTER_FRAMESET:
|
|
733
|
+
case InsertionMode.AFTER_FRAMESET: {
|
|
697
734
|
appendComment(this, token);
|
|
698
735
|
break;
|
|
699
|
-
|
|
736
|
+
}
|
|
737
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
700
738
|
tokenInTableText(this, token);
|
|
701
739
|
break;
|
|
702
|
-
|
|
740
|
+
}
|
|
741
|
+
case InsertionMode.AFTER_BODY: {
|
|
703
742
|
appendCommentToRootHtmlElement(this, token);
|
|
704
743
|
break;
|
|
744
|
+
}
|
|
705
745
|
case InsertionMode.AFTER_AFTER_BODY:
|
|
706
|
-
case InsertionMode.AFTER_AFTER_FRAMESET:
|
|
746
|
+
case InsertionMode.AFTER_AFTER_FRAMESET: {
|
|
707
747
|
appendCommentToDocument(this, token);
|
|
708
748
|
break;
|
|
749
|
+
}
|
|
709
750
|
default:
|
|
710
751
|
// Do nothing
|
|
711
752
|
}
|
|
@@ -713,18 +754,21 @@ export class Parser {
|
|
|
713
754
|
onDoctype(token) {
|
|
714
755
|
this.skipNextNewLine = false;
|
|
715
756
|
switch (this.insertionMode) {
|
|
716
|
-
case InsertionMode.INITIAL:
|
|
757
|
+
case InsertionMode.INITIAL: {
|
|
717
758
|
doctypeInInitialMode(this, token);
|
|
718
759
|
break;
|
|
760
|
+
}
|
|
719
761
|
case InsertionMode.BEFORE_HEAD:
|
|
720
762
|
case InsertionMode.IN_HEAD:
|
|
721
763
|
case InsertionMode.IN_HEAD_NO_SCRIPT:
|
|
722
|
-
case InsertionMode.AFTER_HEAD:
|
|
764
|
+
case InsertionMode.AFTER_HEAD: {
|
|
723
765
|
this._err(token, ERR.misplacedDoctype);
|
|
724
766
|
break;
|
|
725
|
-
|
|
767
|
+
}
|
|
768
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
726
769
|
tokenInTableText(this, token);
|
|
727
770
|
break;
|
|
771
|
+
}
|
|
728
772
|
default:
|
|
729
773
|
// Do nothing
|
|
730
774
|
}
|
|
@@ -757,72 +801,94 @@ export class Parser {
|
|
|
757
801
|
}
|
|
758
802
|
_startTagOutsideForeignContent(token) {
|
|
759
803
|
switch (this.insertionMode) {
|
|
760
|
-
case InsertionMode.INITIAL:
|
|
804
|
+
case InsertionMode.INITIAL: {
|
|
761
805
|
tokenInInitialMode(this, token);
|
|
762
806
|
break;
|
|
763
|
-
|
|
807
|
+
}
|
|
808
|
+
case InsertionMode.BEFORE_HTML: {
|
|
764
809
|
startTagBeforeHtml(this, token);
|
|
765
810
|
break;
|
|
766
|
-
|
|
811
|
+
}
|
|
812
|
+
case InsertionMode.BEFORE_HEAD: {
|
|
767
813
|
startTagBeforeHead(this, token);
|
|
768
814
|
break;
|
|
769
|
-
|
|
815
|
+
}
|
|
816
|
+
case InsertionMode.IN_HEAD: {
|
|
770
817
|
startTagInHead(this, token);
|
|
771
818
|
break;
|
|
772
|
-
|
|
819
|
+
}
|
|
820
|
+
case InsertionMode.IN_HEAD_NO_SCRIPT: {
|
|
773
821
|
startTagInHeadNoScript(this, token);
|
|
774
822
|
break;
|
|
775
|
-
|
|
823
|
+
}
|
|
824
|
+
case InsertionMode.AFTER_HEAD: {
|
|
776
825
|
startTagAfterHead(this, token);
|
|
777
826
|
break;
|
|
778
|
-
|
|
827
|
+
}
|
|
828
|
+
case InsertionMode.IN_BODY: {
|
|
779
829
|
startTagInBody(this, token);
|
|
780
830
|
break;
|
|
781
|
-
|
|
831
|
+
}
|
|
832
|
+
case InsertionMode.IN_TABLE: {
|
|
782
833
|
startTagInTable(this, token);
|
|
783
834
|
break;
|
|
784
|
-
|
|
835
|
+
}
|
|
836
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
785
837
|
tokenInTableText(this, token);
|
|
786
838
|
break;
|
|
787
|
-
|
|
839
|
+
}
|
|
840
|
+
case InsertionMode.IN_CAPTION: {
|
|
788
841
|
startTagInCaption(this, token);
|
|
789
842
|
break;
|
|
790
|
-
|
|
843
|
+
}
|
|
844
|
+
case InsertionMode.IN_COLUMN_GROUP: {
|
|
791
845
|
startTagInColumnGroup(this, token);
|
|
792
846
|
break;
|
|
793
|
-
|
|
847
|
+
}
|
|
848
|
+
case InsertionMode.IN_TABLE_BODY: {
|
|
794
849
|
startTagInTableBody(this, token);
|
|
795
850
|
break;
|
|
796
|
-
|
|
851
|
+
}
|
|
852
|
+
case InsertionMode.IN_ROW: {
|
|
797
853
|
startTagInRow(this, token);
|
|
798
854
|
break;
|
|
799
|
-
|
|
855
|
+
}
|
|
856
|
+
case InsertionMode.IN_CELL: {
|
|
800
857
|
startTagInCell(this, token);
|
|
801
858
|
break;
|
|
802
|
-
|
|
859
|
+
}
|
|
860
|
+
case InsertionMode.IN_SELECT: {
|
|
803
861
|
startTagInSelect(this, token);
|
|
804
862
|
break;
|
|
805
|
-
|
|
863
|
+
}
|
|
864
|
+
case InsertionMode.IN_SELECT_IN_TABLE: {
|
|
806
865
|
startTagInSelectInTable(this, token);
|
|
807
866
|
break;
|
|
808
|
-
|
|
867
|
+
}
|
|
868
|
+
case InsertionMode.IN_TEMPLATE: {
|
|
809
869
|
startTagInTemplate(this, token);
|
|
810
870
|
break;
|
|
811
|
-
|
|
871
|
+
}
|
|
872
|
+
case InsertionMode.AFTER_BODY: {
|
|
812
873
|
startTagAfterBody(this, token);
|
|
813
874
|
break;
|
|
814
|
-
|
|
875
|
+
}
|
|
876
|
+
case InsertionMode.IN_FRAMESET: {
|
|
815
877
|
startTagInFrameset(this, token);
|
|
816
878
|
break;
|
|
817
|
-
|
|
879
|
+
}
|
|
880
|
+
case InsertionMode.AFTER_FRAMESET: {
|
|
818
881
|
startTagAfterFrameset(this, token);
|
|
819
882
|
break;
|
|
820
|
-
|
|
883
|
+
}
|
|
884
|
+
case InsertionMode.AFTER_AFTER_BODY: {
|
|
821
885
|
startTagAfterAfterBody(this, token);
|
|
822
886
|
break;
|
|
823
|
-
|
|
887
|
+
}
|
|
888
|
+
case InsertionMode.AFTER_AFTER_FRAMESET: {
|
|
824
889
|
startTagAfterAfterFrameset(this, token);
|
|
825
890
|
break;
|
|
891
|
+
}
|
|
826
892
|
default:
|
|
827
893
|
// Do nothing
|
|
828
894
|
}
|
|
@@ -839,96 +905,124 @@ export class Parser {
|
|
|
839
905
|
}
|
|
840
906
|
_endTagOutsideForeignContent(token) {
|
|
841
907
|
switch (this.insertionMode) {
|
|
842
|
-
case InsertionMode.INITIAL:
|
|
908
|
+
case InsertionMode.INITIAL: {
|
|
843
909
|
tokenInInitialMode(this, token);
|
|
844
910
|
break;
|
|
845
|
-
|
|
911
|
+
}
|
|
912
|
+
case InsertionMode.BEFORE_HTML: {
|
|
846
913
|
endTagBeforeHtml(this, token);
|
|
847
914
|
break;
|
|
848
|
-
|
|
915
|
+
}
|
|
916
|
+
case InsertionMode.BEFORE_HEAD: {
|
|
849
917
|
endTagBeforeHead(this, token);
|
|
850
918
|
break;
|
|
851
|
-
|
|
919
|
+
}
|
|
920
|
+
case InsertionMode.IN_HEAD: {
|
|
852
921
|
endTagInHead(this, token);
|
|
853
922
|
break;
|
|
854
|
-
|
|
923
|
+
}
|
|
924
|
+
case InsertionMode.IN_HEAD_NO_SCRIPT: {
|
|
855
925
|
endTagInHeadNoScript(this, token);
|
|
856
926
|
break;
|
|
857
|
-
|
|
927
|
+
}
|
|
928
|
+
case InsertionMode.AFTER_HEAD: {
|
|
858
929
|
endTagAfterHead(this, token);
|
|
859
930
|
break;
|
|
860
|
-
|
|
931
|
+
}
|
|
932
|
+
case InsertionMode.IN_BODY: {
|
|
861
933
|
endTagInBody(this, token);
|
|
862
934
|
break;
|
|
863
|
-
|
|
935
|
+
}
|
|
936
|
+
case InsertionMode.TEXT: {
|
|
864
937
|
endTagInText(this, token);
|
|
865
938
|
break;
|
|
866
|
-
|
|
939
|
+
}
|
|
940
|
+
case InsertionMode.IN_TABLE: {
|
|
867
941
|
endTagInTable(this, token);
|
|
868
942
|
break;
|
|
869
|
-
|
|
943
|
+
}
|
|
944
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
870
945
|
tokenInTableText(this, token);
|
|
871
946
|
break;
|
|
872
|
-
|
|
947
|
+
}
|
|
948
|
+
case InsertionMode.IN_CAPTION: {
|
|
873
949
|
endTagInCaption(this, token);
|
|
874
950
|
break;
|
|
875
|
-
|
|
951
|
+
}
|
|
952
|
+
case InsertionMode.IN_COLUMN_GROUP: {
|
|
876
953
|
endTagInColumnGroup(this, token);
|
|
877
954
|
break;
|
|
878
|
-
|
|
955
|
+
}
|
|
956
|
+
case InsertionMode.IN_TABLE_BODY: {
|
|
879
957
|
endTagInTableBody(this, token);
|
|
880
958
|
break;
|
|
881
|
-
|
|
959
|
+
}
|
|
960
|
+
case InsertionMode.IN_ROW: {
|
|
882
961
|
endTagInRow(this, token);
|
|
883
962
|
break;
|
|
884
|
-
|
|
963
|
+
}
|
|
964
|
+
case InsertionMode.IN_CELL: {
|
|
885
965
|
endTagInCell(this, token);
|
|
886
966
|
break;
|
|
887
|
-
|
|
967
|
+
}
|
|
968
|
+
case InsertionMode.IN_SELECT: {
|
|
888
969
|
endTagInSelect(this, token);
|
|
889
970
|
break;
|
|
890
|
-
|
|
971
|
+
}
|
|
972
|
+
case InsertionMode.IN_SELECT_IN_TABLE: {
|
|
891
973
|
endTagInSelectInTable(this, token);
|
|
892
974
|
break;
|
|
893
|
-
|
|
975
|
+
}
|
|
976
|
+
case InsertionMode.IN_TEMPLATE: {
|
|
894
977
|
endTagInTemplate(this, token);
|
|
895
978
|
break;
|
|
896
|
-
|
|
979
|
+
}
|
|
980
|
+
case InsertionMode.AFTER_BODY: {
|
|
897
981
|
endTagAfterBody(this, token);
|
|
898
982
|
break;
|
|
899
|
-
|
|
983
|
+
}
|
|
984
|
+
case InsertionMode.IN_FRAMESET: {
|
|
900
985
|
endTagInFrameset(this, token);
|
|
901
986
|
break;
|
|
902
|
-
|
|
987
|
+
}
|
|
988
|
+
case InsertionMode.AFTER_FRAMESET: {
|
|
903
989
|
endTagAfterFrameset(this, token);
|
|
904
990
|
break;
|
|
905
|
-
|
|
991
|
+
}
|
|
992
|
+
case InsertionMode.AFTER_AFTER_BODY: {
|
|
906
993
|
tokenAfterAfterBody(this, token);
|
|
907
994
|
break;
|
|
995
|
+
}
|
|
908
996
|
default:
|
|
909
997
|
// Do nothing
|
|
910
998
|
}
|
|
911
999
|
}
|
|
912
1000
|
onEof(token) {
|
|
913
1001
|
switch (this.insertionMode) {
|
|
914
|
-
case InsertionMode.INITIAL:
|
|
1002
|
+
case InsertionMode.INITIAL: {
|
|
915
1003
|
tokenInInitialMode(this, token);
|
|
916
1004
|
break;
|
|
917
|
-
|
|
1005
|
+
}
|
|
1006
|
+
case InsertionMode.BEFORE_HTML: {
|
|
918
1007
|
tokenBeforeHtml(this, token);
|
|
919
1008
|
break;
|
|
920
|
-
|
|
1009
|
+
}
|
|
1010
|
+
case InsertionMode.BEFORE_HEAD: {
|
|
921
1011
|
tokenBeforeHead(this, token);
|
|
922
1012
|
break;
|
|
923
|
-
|
|
1013
|
+
}
|
|
1014
|
+
case InsertionMode.IN_HEAD: {
|
|
924
1015
|
tokenInHead(this, token);
|
|
925
1016
|
break;
|
|
926
|
-
|
|
1017
|
+
}
|
|
1018
|
+
case InsertionMode.IN_HEAD_NO_SCRIPT: {
|
|
927
1019
|
tokenInHeadNoScript(this, token);
|
|
928
1020
|
break;
|
|
929
|
-
|
|
1021
|
+
}
|
|
1022
|
+
case InsertionMode.AFTER_HEAD: {
|
|
930
1023
|
tokenAfterHead(this, token);
|
|
931
1024
|
break;
|
|
1025
|
+
}
|
|
932
1026
|
case InsertionMode.IN_BODY:
|
|
933
1027
|
case InsertionMode.IN_TABLE:
|
|
934
1028
|
case InsertionMode.IN_CAPTION:
|
|
@@ -937,25 +1031,30 @@ export class Parser {
|
|
|
937
1031
|
case InsertionMode.IN_ROW:
|
|
938
1032
|
case InsertionMode.IN_CELL:
|
|
939
1033
|
case InsertionMode.IN_SELECT:
|
|
940
|
-
case InsertionMode.IN_SELECT_IN_TABLE:
|
|
1034
|
+
case InsertionMode.IN_SELECT_IN_TABLE: {
|
|
941
1035
|
eofInBody(this, token);
|
|
942
1036
|
break;
|
|
943
|
-
|
|
1037
|
+
}
|
|
1038
|
+
case InsertionMode.TEXT: {
|
|
944
1039
|
eofInText(this, token);
|
|
945
1040
|
break;
|
|
946
|
-
|
|
1041
|
+
}
|
|
1042
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
947
1043
|
tokenInTableText(this, token);
|
|
948
1044
|
break;
|
|
949
|
-
|
|
1045
|
+
}
|
|
1046
|
+
case InsertionMode.IN_TEMPLATE: {
|
|
950
1047
|
eofInTemplate(this, token);
|
|
951
1048
|
break;
|
|
1049
|
+
}
|
|
952
1050
|
case InsertionMode.AFTER_BODY:
|
|
953
1051
|
case InsertionMode.IN_FRAMESET:
|
|
954
1052
|
case InsertionMode.AFTER_FRAMESET:
|
|
955
1053
|
case InsertionMode.AFTER_AFTER_BODY:
|
|
956
|
-
case InsertionMode.AFTER_AFTER_FRAMESET:
|
|
1054
|
+
case InsertionMode.AFTER_AFTER_FRAMESET: {
|
|
957
1055
|
stopParsing(this, token);
|
|
958
1056
|
break;
|
|
1057
|
+
}
|
|
959
1058
|
default:
|
|
960
1059
|
// Do nothing
|
|
961
1060
|
}
|
|
@@ -983,26 +1082,30 @@ export class Parser {
|
|
|
983
1082
|
case InsertionMode.IN_SELECT:
|
|
984
1083
|
case InsertionMode.IN_SELECT_IN_TABLE:
|
|
985
1084
|
case InsertionMode.IN_FRAMESET:
|
|
986
|
-
case InsertionMode.AFTER_FRAMESET:
|
|
1085
|
+
case InsertionMode.AFTER_FRAMESET: {
|
|
987
1086
|
this._insertCharacters(token);
|
|
988
1087
|
break;
|
|
1088
|
+
}
|
|
989
1089
|
case InsertionMode.IN_BODY:
|
|
990
1090
|
case InsertionMode.IN_CAPTION:
|
|
991
1091
|
case InsertionMode.IN_CELL:
|
|
992
1092
|
case InsertionMode.IN_TEMPLATE:
|
|
993
1093
|
case InsertionMode.AFTER_BODY:
|
|
994
1094
|
case InsertionMode.AFTER_AFTER_BODY:
|
|
995
|
-
case InsertionMode.AFTER_AFTER_FRAMESET:
|
|
1095
|
+
case InsertionMode.AFTER_AFTER_FRAMESET: {
|
|
996
1096
|
whitespaceCharacterInBody(this, token);
|
|
997
1097
|
break;
|
|
1098
|
+
}
|
|
998
1099
|
case InsertionMode.IN_TABLE:
|
|
999
1100
|
case InsertionMode.IN_TABLE_BODY:
|
|
1000
|
-
case InsertionMode.IN_ROW:
|
|
1101
|
+
case InsertionMode.IN_ROW: {
|
|
1001
1102
|
characterInTable(this, token);
|
|
1002
1103
|
break;
|
|
1003
|
-
|
|
1104
|
+
}
|
|
1105
|
+
case InsertionMode.IN_TABLE_TEXT: {
|
|
1004
1106
|
whitespaceCharacterInTableText(this, token);
|
|
1005
1107
|
break;
|
|
1108
|
+
}
|
|
1006
1109
|
default:
|
|
1007
1110
|
// Do nothing
|
|
1008
1111
|
}
|
|
@@ -2632,8 +2735,9 @@ function endTagInRow(p, token) {
|
|
|
2632
2735
|
// Ignore end tag
|
|
2633
2736
|
break;
|
|
2634
2737
|
}
|
|
2635
|
-
default:
|
|
2738
|
+
default: {
|
|
2636
2739
|
endTagInTable(p, token);
|
|
2740
|
+
}
|
|
2637
2741
|
}
|
|
2638
2742
|
}
|
|
2639
2743
|
// The "in cell" insertion mode
|
|
@@ -2822,39 +2926,45 @@ function startTagInTemplate(p, token) {
|
|
|
2822
2926
|
case $.SCRIPT:
|
|
2823
2927
|
case $.STYLE:
|
|
2824
2928
|
case $.TEMPLATE:
|
|
2825
|
-
case $.TITLE:
|
|
2929
|
+
case $.TITLE: {
|
|
2826
2930
|
startTagInHead(p, token);
|
|
2827
2931
|
break;
|
|
2932
|
+
}
|
|
2828
2933
|
// Re-process the token in the appropriate mode
|
|
2829
2934
|
case $.CAPTION:
|
|
2830
2935
|
case $.COLGROUP:
|
|
2831
2936
|
case $.TBODY:
|
|
2832
2937
|
case $.TFOOT:
|
|
2833
|
-
case $.THEAD:
|
|
2938
|
+
case $.THEAD: {
|
|
2834
2939
|
p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;
|
|
2835
2940
|
p.insertionMode = InsertionMode.IN_TABLE;
|
|
2836
2941
|
startTagInTable(p, token);
|
|
2837
2942
|
break;
|
|
2838
|
-
|
|
2943
|
+
}
|
|
2944
|
+
case $.COL: {
|
|
2839
2945
|
p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;
|
|
2840
2946
|
p.insertionMode = InsertionMode.IN_COLUMN_GROUP;
|
|
2841
2947
|
startTagInColumnGroup(p, token);
|
|
2842
2948
|
break;
|
|
2843
|
-
|
|
2949
|
+
}
|
|
2950
|
+
case $.TR: {
|
|
2844
2951
|
p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;
|
|
2845
2952
|
p.insertionMode = InsertionMode.IN_TABLE_BODY;
|
|
2846
2953
|
startTagInTableBody(p, token);
|
|
2847
2954
|
break;
|
|
2955
|
+
}
|
|
2848
2956
|
case $.TD:
|
|
2849
|
-
case $.TH:
|
|
2957
|
+
case $.TH: {
|
|
2850
2958
|
p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;
|
|
2851
2959
|
p.insertionMode = InsertionMode.IN_ROW;
|
|
2852
2960
|
startTagInRow(p, token);
|
|
2853
2961
|
break;
|
|
2854
|
-
|
|
2962
|
+
}
|
|
2963
|
+
default: {
|
|
2855
2964
|
p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;
|
|
2856
2965
|
p.insertionMode = InsertionMode.IN_BODY;
|
|
2857
2966
|
startTagInBody(p, token);
|
|
2967
|
+
}
|
|
2858
2968
|
}
|
|
2859
2969
|
}
|
|
2860
2970
|
function endTagInTemplate(p, token) {
|