1{ 2 "tests": [ 3 { 4 "description": "<head></head><style></style>", 5 "input": "<head></head><style></style>", 6 "output": [ 7 [ 8 "StartTag", 9 "head", 10 {} 11 ], 12 [ 13 "EndTag", 14 "head" 15 ], 16 [ 17 "StartTag", 18 "style", 19 {} 20 ], 21 [ 22 "EndTag", 23 "style" 24 ] 25 ] 26 }, 27 { 28 "description": "<head></head><script></script>", 29 "input": "<head></head><script></script>", 30 "output": [ 31 [ 32 "StartTag", 33 "head", 34 {} 35 ], 36 [ 37 "EndTag", 38 "head" 39 ], 40 [ 41 "StartTag", 42 "script", 43 {} 44 ], 45 [ 46 "EndTag", 47 "script" 48 ] 49 ] 50 }, 51 { 52 "description": "<head></head><!-- --><style></style><!-- --><script></script>", 53 "input": "<head></head><!-- --><style></style><!-- --><script></script>", 54 "output": [ 55 [ 56 "StartTag", 57 "head", 58 {} 59 ], 60 [ 61 "EndTag", 62 "head" 63 ], 64 [ 65 "Comment", 66 " " 67 ], 68 [ 69 "StartTag", 70 "style", 71 {} 72 ], 73 [ 74 "EndTag", 75 "style" 76 ], 77 [ 78 "Comment", 79 " " 80 ], 81 [ 82 "StartTag", 83 "script", 84 {} 85 ], 86 [ 87 "EndTag", 88 "script" 89 ] 90 ] 91 }, 92 { 93 "description": "<head></head><!-- -->x<style></style><!-- --><script></script>", 94 "input": "<head></head><!-- -->x<style></style><!-- --><script></script>", 95 "output": [ 96 [ 97 "StartTag", 98 "head", 99 {} 100 ], 101 [ 102 "EndTag", 103 "head" 104 ], 105 [ 106 "Comment", 107 " " 108 ], 109 [ 110 "Character", 111 "x" 112 ], 113 [ 114 "StartTag", 115 "style", 116 {} 117 ], 118 [ 119 "EndTag", 120 "style" 121 ], 122 [ 123 "Comment", 124 " " 125 ], 126 [ 127 "StartTag", 128 "script", 129 {} 130 ], 131 [ 132 "EndTag", 133 "script" 134 ] 135 ] 136 }, 137 { 138 "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\n</pre></body></html>", 139 "input": "<!DOCTYPE html><html><head></head><body><pre>\r\n</pre></body></html>", 140 "output": [ 141 [ 142 "DOCTYPE", 143 "html", 144 null, 145 null, 146 true 147 ], 148 [ 149 "StartTag", 150 "html", 151 {} 152 ], 153 [ 154 "StartTag", 155 "head", 156 {} 157 ], 158 [ 159 "EndTag", 160 "head" 161 ], 162 [ 163 "StartTag", 164 "body", 165 {} 166 ], 167 [ 168 "StartTag", 169 "pre", 170 {} 171 ], 172 [ 173 "EndTag", 174 "pre" 175 ], 176 [ 177 "EndTag", 178 "body" 179 ], 180 [ 181 "EndTag", 182 "html" 183 ] 184 ] 185 }, 186 { 187 "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\nfoo</pre></body></html>", 188 "input": "<!DOCTYPE html><html><head></head><body><pre>\r\nfoo</pre></body></html>", 189 "output": [ 190 [ 191 "DOCTYPE", 192 "html", 193 null, 194 null, 195 true 196 ], 197 [ 198 "StartTag", 199 "html", 200 {} 201 ], 202 [ 203 "StartTag", 204 "head", 205 {} 206 ], 207 [ 208 "EndTag", 209 "head" 210 ], 211 [ 212 "StartTag", 213 "body", 214 {} 215 ], 216 [ 217 "StartTag", 218 "pre", 219 {} 220 ], 221 [ 222 "Character", 223 "foo" 224 ], 225 [ 226 "EndTag", 227 "pre" 228 ], 229 [ 230 "EndTag", 231 "body" 232 ], 233 [ 234 "EndTag", 235 "html" 236 ] 237 ] 238 }, 239 { 240 "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\n\\r\\nfoo</pre></body></html>", 241 "input": "<!DOCTYPE html><html><head></head><body><pre>\r\n\r\nfoo</pre></body></html>", 242 "output": [ 243 [ 244 "DOCTYPE", 245 "html", 246 null, 247 null, 248 true 249 ], 250 [ 251 "StartTag", 252 "html", 253 {} 254 ], 255 [ 256 "StartTag", 257 "head", 258 {} 259 ], 260 [ 261 "EndTag", 262 "head" 263 ], 264 [ 265 "StartTag", 266 "body", 267 {} 268 ], 269 [ 270 "StartTag", 271 "pre", 272 {} 273 ], 274 [ 275 "Character", 276 "\nfoo" 277 ], 278 [ 279 "EndTag", 280 "pre" 281 ], 282 [ 283 "EndTag", 284 "body" 285 ], 286 [ 287 "EndTag", 288 "html" 289 ] 290 ] 291 }, 292 { 293 "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\nfoo\\r\\n</pre></body></html>", 294 "input": "<!DOCTYPE html><html><head></head><body><pre>\r\nfoo\r\n</pre></body></html>", 295 "output": [ 296 [ 297 "DOCTYPE", 298 "html", 299 null, 300 null, 301 true 302 ], 303 [ 304 "StartTag", 305 "html", 306 {} 307 ], 308 [ 309 "StartTag", 310 "head", 311 {} 312 ], 313 [ 314 "EndTag", 315 "head" 316 ], 317 [ 318 "StartTag", 319 "body", 320 {} 321 ], 322 [ 323 "StartTag", 324 "pre", 325 {} 326 ], 327 [ 328 "Character", 329 "foo\n" 330 ], 331 [ 332 "EndTag", 333 "pre" 334 ], 335 [ 336 "EndTag", 337 "body" 338 ], 339 [ 340 "EndTag", 341 "html" 342 ] 343 ] 344 }, 345 { 346 "description": "<!DOCTYPE html><html><head></head><body><pre>x</pre><span>\\r\\n</span></body></html>", 347 "input": "<!DOCTYPE html><html><head></head><body><pre>x</pre><span>\r\n</span></body></html>", 348 "output": [ 349 [ 350 "DOCTYPE", 351 "html", 352 null, 353 null, 354 true 355 ], 356 [ 357 "StartTag", 358 "html", 359 {} 360 ], 361 [ 362 "StartTag", 363 "head", 364 {} 365 ], 366 [ 367 "EndTag", 368 "head" 369 ], 370 [ 371 "StartTag", 372 "body", 373 {} 374 ], 375 [ 376 "StartTag", 377 "pre", 378 {} 379 ], 380 [ 381 "Character", 382 "x" 383 ], 384 [ 385 "EndTag", 386 "pre" 387 ], 388 [ 389 "StartTag", 390 "span", 391 {} 392 ], 393 [ 394 "Character", 395 "\n" 396 ], 397 [ 398 "EndTag", 399 "span" 400 ], 401 [ 402 "EndTag", 403 "body" 404 ], 405 [ 406 "EndTag", 407 "html" 408 ] 409 ] 410 }, 411 { 412 "description": "<!DOCTYPE html><html><head></head><body><pre>x\\r\\ny</pre></body></html>", 413 "input": "<!DOCTYPE html><html><head></head><body><pre>x\r\ny</pre></body></html>", 414 "output": [ 415 [ 416 "DOCTYPE", 417 "html", 418 null, 419 null, 420 true 421 ], 422 [ 423 "StartTag", 424 "html", 425 {} 426 ], 427 [ 428 "StartTag", 429 "head", 430 {} 431 ], 432 [ 433 "EndTag", 434 "head" 435 ], 436 [ 437 "StartTag", 438 "body", 439 {} 440 ], 441 [ 442 "StartTag", 443 "pre", 444 {} 445 ], 446 [ 447 "Character", 448 "x\ny" 449 ], 450 [ 451 "EndTag", 452 "pre" 453 ], 454 [ 455 "EndTag", 456 "body" 457 ], 458 [ 459 "EndTag", 460 "html" 461 ] 462 ] 463 }, 464 { 465 "description": "<!DOCTYPE html><html><head></head><body><pre>x<div>\\r\\ny</pre></body></html>", 466 "input": "<!DOCTYPE html><html><head></head><body><pre>x<div>\r\ny</pre></body></html>", 467 "output": [ 468 [ 469 "DOCTYPE", 470 "html", 471 null, 472 null, 473 true 474 ], 475 [ 476 "StartTag", 477 "html", 478 {} 479 ], 480 [ 481 "StartTag", 482 "head", 483 {} 484 ], 485 [ 486 "EndTag", 487 "head" 488 ], 489 [ 490 "StartTag", 491 "body", 492 {} 493 ], 494 [ 495 "StartTag", 496 "pre", 497 {} 498 ], 499 [ 500 "Character", 501 "x" 502 ], 503 [ 504 "StartTag", 505 "div", 506 {} 507 ], 508 [ 509 "Character", 510 "\ny" 511 ], 512 [ 513 "EndTag", 514 "pre" 515 ], 516 [ 517 "EndTag", 518 "body" 519 ], 520 [ 521 "EndTag", 522 "html" 523 ] 524 ] 525 }, 526 { 527 "description": "<!DOCTYPE html><pre>

A</pre>", 528 "input": "<!DOCTYPE html><pre>

A</pre>", 529 "output": [ 530 [ 531 "DOCTYPE", 532 "html", 533 null, 534 null, 535 true 536 ], 537 [ 538 "StartTag", 539 "pre", 540 {} 541 ], 542 [ 543 "Character", 544 "\nA" 545 ], 546 [ 547 "EndTag", 548 "pre" 549 ] 550 ] 551 }, 552 { 553 "description": "<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>", 554 "input": "<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>", 555 "output": [ 556 [ 557 "DOCTYPE", 558 "html", 559 null, 560 null, 561 true 562 ], 563 [ 564 "StartTag", 565 "html", 566 {} 567 ], 568 [ 569 "StartTag", 570 "meta", 571 {} 572 ], 573 [ 574 "StartTag", 575 "head", 576 {} 577 ], 578 [ 579 "EndTag", 580 "head" 581 ], 582 [ 583 "EndTag", 584 "html" 585 ] 586 ] 587 }, 588 { 589 "description": "<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>", 590 "input": "<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>", 591 "output": [ 592 [ 593 "DOCTYPE", 594 "html", 595 null, 596 null, 597 true 598 ], 599 [ 600 "StartTag", 601 "html", 602 {} 603 ], 604 [ 605 "StartTag", 606 "head", 607 {} 608 ], 609 [ 610 "StartTag", 611 "head", 612 {} 613 ], 614 [ 615 "EndTag", 616 "head" 617 ], 618 [ 619 "EndTag", 620 "html" 621 ] 622 ] 623 }, 624 { 625 "description": "<textarea>foo<span>bar</span><i>baz", 626 "input": "<textarea>foo<span>bar</span><i>baz", 627 "output": [ 628 [ 629 "StartTag", 630 "textarea", 631 {} 632 ], 633 [ 634 "Character", 635 "foo<span>bar</span><i>baz" 636 ] 637 ] 638 }, 639 { 640 "description": "<title>foo<span>bar</em><i>baz", 641 "input": "<title>foo<span>bar</em><i>baz", 642 "output": [ 643 [ 644 "StartTag", 645 "title", 646 {} 647 ], 648 [ 649 "Character", 650 "foo<span>bar</em><i>baz" 651 ] 652 ] 653 }, 654 { 655 "description": "<!DOCTYPE html><textarea>\\r\\n</textarea>", 656 "input": "<!DOCTYPE html><textarea>\r\n</textarea>", 657 "output": [ 658 [ 659 "DOCTYPE", 660 "html", 661 null, 662 null, 663 true 664 ], 665 [ 666 "StartTag", 667 "textarea", 668 {} 669 ], 670 [ 671 "EndTag", 672 "textarea" 673 ] 674 ] 675 }, 676 { 677 "description": "<!DOCTYPE html><textarea>\\r\\nfoo</textarea>", 678 "input": "<!DOCTYPE html><textarea>\r\nfoo</textarea>", 679 "output": [ 680 [ 681 "DOCTYPE", 682 "html", 683 null, 684 null, 685 true 686 ], 687 [ 688 "StartTag", 689 "textarea", 690 {} 691 ], 692 [ 693 "Character", 694 "foo" 695 ], 696 [ 697 "EndTag", 698 "textarea" 699 ] 700 ] 701 }, 702 { 703 "description": "<!DOCTYPE html><textarea>\\r\\n\\r\\nfoo</textarea>", 704 "input": "<!DOCTYPE html><textarea>\r\n\r\nfoo</textarea>", 705 "output": [ 706 [ 707 "DOCTYPE", 708 "html", 709 null, 710 null, 711 true 712 ], 713 [ 714 "StartTag", 715 "textarea", 716 {} 717 ], 718 [ 719 "Character", 720 "\nfoo" 721 ], 722 [ 723 "EndTag", 724 "textarea" 725 ] 726 ] 727 }, 728 { 729 "description": "<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>", 730 "input": "<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>", 731 "output": [ 732 [ 733 "DOCTYPE", 734 "html", 735 null, 736 null, 737 true 738 ], 739 [ 740 "StartTag", 741 "html", 742 {} 743 ], 744 [ 745 "StartTag", 746 "head", 747 {} 748 ], 749 [ 750 "EndTag", 751 "head" 752 ], 753 [ 754 "StartTag", 755 "body", 756 {} 757 ], 758 [ 759 "StartTag", 760 "ul", 761 {} 762 ], 763 [ 764 "StartTag", 765 "li", 766 {} 767 ], 768 [ 769 "StartTag", 770 "div", 771 {} 772 ], 773 [ 774 "StartTag", 775 "p", 776 {} 777 ], 778 [ 779 "StartTag", 780 "li", 781 {} 782 ], 783 [ 784 "EndTag", 785 "ul" 786 ], 787 [ 788 "EndTag", 789 "body" 790 ], 791 [ 792 "EndTag", 793 "html" 794 ] 795 ] 796 }, 797 { 798 "description": "<!doctype html><nobr><nobr><nobr>", 799 "input": "<!doctype html><nobr><nobr><nobr>", 800 "output": [ 801 [ 802 "DOCTYPE", 803 "html", 804 null, 805 null, 806 true 807 ], 808 [ 809 "StartTag", 810 "nobr", 811 {} 812 ], 813 [ 814 "StartTag", 815 "nobr", 816 {} 817 ], 818 [ 819 "StartTag", 820 "nobr", 821 {} 822 ] 823 ] 824 }, 825 { 826 "description": "<!doctype html><nobr><nobr></nobr><nobr>", 827 "input": "<!doctype html><nobr><nobr></nobr><nobr>", 828 "output": [ 829 [ 830 "DOCTYPE", 831 "html", 832 null, 833 null, 834 true 835 ], 836 [ 837 "StartTag", 838 "nobr", 839 {} 840 ], 841 [ 842 "StartTag", 843 "nobr", 844 {} 845 ], 846 [ 847 "EndTag", 848 "nobr" 849 ], 850 [ 851 "StartTag", 852 "nobr", 853 {} 854 ] 855 ] 856 }, 857 { 858 "description": "<!doctype html><html><body><p><table></table></body></html>", 859 "input": "<!doctype html><html><body><p><table></table></body></html>", 860 "output": [ 861 [ 862 "DOCTYPE", 863 "html", 864 null, 865 null, 866 true 867 ], 868 [ 869 "StartTag", 870 "html", 871 {} 872 ], 873 [ 874 "StartTag", 875 "body", 876 {} 877 ], 878 [ 879 "StartTag", 880 "p", 881 {} 882 ], 883 [ 884 "StartTag", 885 "table", 886 {} 887 ], 888 [ 889 "EndTag", 890 "table" 891 ], 892 [ 893 "EndTag", 894 "body" 895 ], 896 [ 897 "EndTag", 898 "html" 899 ] 900 ] 901 }, 902 { 903 "description": "<p><table></table>", 904 "input": "<p><table></table>", 905 "output": [ 906 [ 907 "StartTag", 908 "p", 909 {} 910 ], 911 [ 912 "StartTag", 913 "table", 914 {} 915 ], 916 [ 917 "EndTag", 918 "table" 919 ] 920 ] 921 } 922 ] 923}