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