1{ 2 "tests": [ 3 { 4 "description": "<b><p>Bold </b> Not bold</p>\\r\\nAlso not bold.", 5 "input": "<b><p>Bold </b> Not bold</p>\r\nAlso not bold.", 6 "output": [ 7 [ 8 "StartTag", 9 "b", 10 {} 11 ], 12 [ 13 "StartTag", 14 "p", 15 {} 16 ], 17 [ 18 "Character", 19 "Bold " 20 ], 21 [ 22 "EndTag", 23 "b" 24 ], 25 [ 26 "Character", 27 " Not bold" 28 ], 29 [ 30 "EndTag", 31 "p" 32 ], 33 [ 34 "Character", 35 "\nAlso not bold." 36 ] 37 ] 38 }, 39 { 40 "description": "<html>\\r\\n<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain\\r\\n<p>I should not be red. <font color=red>Red. <i>Italic and red.</p>\\r\\n<p>Italic and red. </i> Red.</font> I should not be red.</p>\\r\\n<b>Bold <i>Bold and italic</b> Only Italic </i> Plain", 41 "input": "<html>\r\n<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain\r\n<p>I should not be red. <font color=red>Red. <i>Italic and red.</p>\r\n<p>Italic and red. </i> Red.</font> I should not be red.</p>\r\n<b>Bold <i>Bold and italic</b> Only Italic </i> Plain", 42 "output": [ 43 [ 44 "StartTag", 45 "html", 46 {} 47 ], 48 [ 49 "Character", 50 "\n" 51 ], 52 [ 53 "StartTag", 54 "font", 55 { 56 "color": "red" 57 } 58 ], 59 [ 60 "StartTag", 61 "i", 62 {} 63 ], 64 [ 65 "Character", 66 "Italic and Red" 67 ], 68 [ 69 "StartTag", 70 "p", 71 {} 72 ], 73 [ 74 "Character", 75 "Italic and Red " 76 ], 77 [ 78 "EndTag", 79 "font" 80 ], 81 [ 82 "Character", 83 " Just italic." 84 ], 85 [ 86 "EndTag", 87 "p" 88 ], 89 [ 90 "Character", 91 " Italic only." 92 ], 93 [ 94 "EndTag", 95 "i" 96 ], 97 [ 98 "Character", 99 " Plain\n" 100 ], 101 [ 102 "StartTag", 103 "p", 104 {} 105 ], 106 [ 107 "Character", 108 "I should not be red. " 109 ], 110 [ 111 "StartTag", 112 "font", 113 { 114 "color": "red" 115 } 116 ], 117 [ 118 "Character", 119 "Red. " 120 ], 121 [ 122 "StartTag", 123 "i", 124 {} 125 ], 126 [ 127 "Character", 128 "Italic and red." 129 ], 130 [ 131 "EndTag", 132 "p" 133 ], 134 [ 135 "Character", 136 "\n" 137 ], 138 [ 139 "StartTag", 140 "p", 141 {} 142 ], 143 [ 144 "Character", 145 "Italic and red. " 146 ], 147 [ 148 "EndTag", 149 "i" 150 ], 151 [ 152 "Character", 153 " Red." 154 ], 155 [ 156 "EndTag", 157 "font" 158 ], 159 [ 160 "Character", 161 " I should not be red." 162 ], 163 [ 164 "EndTag", 165 "p" 166 ], 167 [ 168 "Character", 169 "\n" 170 ], 171 [ 172 "StartTag", 173 "b", 174 {} 175 ], 176 [ 177 "Character", 178 "Bold " 179 ], 180 [ 181 "StartTag", 182 "i", 183 {} 184 ], 185 [ 186 "Character", 187 "Bold and italic" 188 ], 189 [ 190 "EndTag", 191 "b" 192 ], 193 [ 194 "Character", 195 " Only Italic " 196 ], 197 [ 198 "EndTag", 199 "i" 200 ], 201 [ 202 "Character", 203 " Plain" 204 ] 205 ] 206 }, 207 { 208 "description": "<html><body>\\r\\n<p><font size=\"7\">First paragraph.</p>\\r\\n<p>Second paragraph.</p></font>\\r\\n<b><p><i>Bold and Italic</b> Italic</p>", 209 "input": "<html><body>\r\n<p><font size=\"7\">First paragraph.</p>\r\n<p>Second paragraph.</p></font>\r\n<b><p><i>Bold and Italic</b> Italic</p>", 210 "output": [ 211 [ 212 "StartTag", 213 "html", 214 {} 215 ], 216 [ 217 "StartTag", 218 "body", 219 {} 220 ], 221 [ 222 "Character", 223 "\n" 224 ], 225 [ 226 "StartTag", 227 "p", 228 {} 229 ], 230 [ 231 "StartTag", 232 "font", 233 { 234 "size": "7" 235 } 236 ], 237 [ 238 "Character", 239 "First paragraph." 240 ], 241 [ 242 "EndTag", 243 "p" 244 ], 245 [ 246 "Character", 247 "\n" 248 ], 249 [ 250 "StartTag", 251 "p", 252 {} 253 ], 254 [ 255 "Character", 256 "Second paragraph." 257 ], 258 [ 259 "EndTag", 260 "p" 261 ], 262 [ 263 "EndTag", 264 "font" 265 ], 266 [ 267 "Character", 268 "\n" 269 ], 270 [ 271 "StartTag", 272 "b", 273 {} 274 ], 275 [ 276 "StartTag", 277 "p", 278 {} 279 ], 280 [ 281 "StartTag", 282 "i", 283 {} 284 ], 285 [ 286 "Character", 287 "Bold and Italic" 288 ], 289 [ 290 "EndTag", 291 "b" 292 ], 293 [ 294 "Character", 295 " Italic" 296 ], 297 [ 298 "EndTag", 299 "p" 300 ] 301 ] 302 }, 303 { 304 "description": "<html>\\r\\n<dl>\\r\\n<dt><b>Boo\\r\\n<dd>Goo?\\r\\n</dl>\\r\\n</html>", 305 "input": "<html>\r\n<dl>\r\n<dt><b>Boo\r\n<dd>Goo?\r\n</dl>\r\n</html>", 306 "output": [ 307 [ 308 "StartTag", 309 "html", 310 {} 311 ], 312 [ 313 "Character", 314 "\n" 315 ], 316 [ 317 "StartTag", 318 "dl", 319 {} 320 ], 321 [ 322 "Character", 323 "\n" 324 ], 325 [ 326 "StartTag", 327 "dt", 328 {} 329 ], 330 [ 331 "StartTag", 332 "b", 333 {} 334 ], 335 [ 336 "Character", 337 "Boo\n" 338 ], 339 [ 340 "StartTag", 341 "dd", 342 {} 343 ], 344 [ 345 "Character", 346 "Goo?\n" 347 ], 348 [ 349 "EndTag", 350 "dl" 351 ], 352 [ 353 "Character", 354 "\n" 355 ], 356 [ 357 "EndTag", 358 "html" 359 ] 360 ] 361 }, 362 { 363 "description": "<html><body>\\r\\n<label><a><div>Hello<div>World</div></a></label> \\r\\n</body></html>", 364 "input": "<html><body>\r\n<label><a><div>Hello<div>World</div></a></label> \r\n</body></html>", 365 "output": [ 366 [ 367 "StartTag", 368 "html", 369 {} 370 ], 371 [ 372 "StartTag", 373 "body", 374 {} 375 ], 376 [ 377 "Character", 378 "\n" 379 ], 380 [ 381 "StartTag", 382 "label", 383 {} 384 ], 385 [ 386 "StartTag", 387 "a", 388 {} 389 ], 390 [ 391 "StartTag", 392 "div", 393 {} 394 ], 395 [ 396 "Character", 397 "Hello" 398 ], 399 [ 400 "StartTag", 401 "div", 402 {} 403 ], 404 [ 405 "Character", 406 "World" 407 ], 408 [ 409 "EndTag", 410 "div" 411 ], 412 [ 413 "EndTag", 414 "a" 415 ], 416 [ 417 "EndTag", 418 "label" 419 ], 420 [ 421 "Character", 422 " \n" 423 ], 424 [ 425 "EndTag", 426 "body" 427 ], 428 [ 429 "EndTag", 430 "html" 431 ] 432 ] 433 }, 434 { 435 "description": "<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table>", 436 "input": "<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table>", 437 "output": [ 438 [ 439 "StartTag", 440 "table", 441 {} 442 ], 443 [ 444 "StartTag", 445 "center", 446 {} 447 ], 448 [ 449 "Character", 450 " " 451 ], 452 [ 453 "StartTag", 454 "font", 455 {} 456 ], 457 [ 458 "Character", 459 "a" 460 ], 461 [ 462 "EndTag", 463 "center" 464 ], 465 [ 466 "Character", 467 " " 468 ], 469 [ 470 "StartTag", 471 "img", 472 {} 473 ], 474 [ 475 "Character", 476 " " 477 ], 478 [ 479 "StartTag", 480 "tr", 481 {} 482 ], 483 [ 484 "StartTag", 485 "td", 486 {} 487 ], 488 [ 489 "Character", 490 " " 491 ], 492 [ 493 "EndTag", 494 "td" 495 ], 496 [ 497 "Character", 498 " " 499 ], 500 [ 501 "EndTag", 502 "tr" 503 ], 504 [ 505 "Character", 506 " " 507 ], 508 [ 509 "EndTag", 510 "table" 511 ] 512 ] 513 }, 514 { 515 "description": "<table><tr><p><a><p>You should see this text.", 516 "input": "<table><tr><p><a><p>You should see this text.", 517 "output": [ 518 [ 519 "StartTag", 520 "table", 521 {} 522 ], 523 [ 524 "StartTag", 525 "tr", 526 {} 527 ], 528 [ 529 "StartTag", 530 "p", 531 {} 532 ], 533 [ 534 "StartTag", 535 "a", 536 {} 537 ], 538 [ 539 "StartTag", 540 "p", 541 {} 542 ], 543 [ 544 "Character", 545 "You should see this text." 546 ] 547 ] 548 }, 549 { 550 "description": "<TABLE>\\r\\n<TR>\\r\\n<CENTER><CENTER><TD></TD></TR><TR>\\r\\n<FONT>\\r\\n<TABLE><tr></tr></TABLE>\\r\\n</P>\\r\\n<a></font><font></a>\\r\\nThis page contains an insanely badly-nested tag sequence.", 551 "input": "<TABLE>\r\n<TR>\r\n<CENTER><CENTER><TD></TD></TR><TR>\r\n<FONT>\r\n<TABLE><tr></tr></TABLE>\r\n</P>\r\n<a></font><font></a>\r\nThis page contains an insanely badly-nested tag sequence.", 552 "output": [ 553 [ 554 "StartTag", 555 "table", 556 {} 557 ], 558 [ 559 "Character", 560 "\n" 561 ], 562 [ 563 "StartTag", 564 "tr", 565 {} 566 ], 567 [ 568 "Character", 569 "\n" 570 ], 571 [ 572 "StartTag", 573 "center", 574 {} 575 ], 576 [ 577 "StartTag", 578 "center", 579 {} 580 ], 581 [ 582 "StartTag", 583 "td", 584 {} 585 ], 586 [ 587 "EndTag", 588 "td" 589 ], 590 [ 591 "EndTag", 592 "tr" 593 ], 594 [ 595 "StartTag", 596 "tr", 597 {} 598 ], 599 [ 600 "Character", 601 "\n" 602 ], 603 [ 604 "StartTag", 605 "font", 606 {} 607 ], 608 [ 609 "Character", 610 "\n" 611 ], 612 [ 613 "StartTag", 614 "table", 615 {} 616 ], 617 [ 618 "StartTag", 619 "tr", 620 {} 621 ], 622 [ 623 "EndTag", 624 "tr" 625 ], 626 [ 627 "EndTag", 628 "table" 629 ], 630 [ 631 "Character", 632 "\n" 633 ], 634 [ 635 "EndTag", 636 "p" 637 ], 638 [ 639 "Character", 640 "\n" 641 ], 642 [ 643 "StartTag", 644 "a", 645 {} 646 ], 647 [ 648 "EndTag", 649 "font" 650 ], 651 [ 652 "StartTag", 653 "font", 654 {} 655 ], 656 [ 657 "EndTag", 658 "a" 659 ], 660 [ 661 "Character", 662 "\nThis page contains an insanely badly-nested tag sequence." 663 ] 664 ] 665 }, 666 { 667 "description": "<html>\\r\\n<body>\\r\\n<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the\\r\\nnobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre>\\r\\n</body>\\r\\n</html>", 668 "input": "<html>\r\n<body>\r\n<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the\r\nnobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre>\r\n</body>\r\n</html>", 669 "output": [ 670 [ 671 "StartTag", 672 "html", 673 {} 674 ], 675 [ 676 "Character", 677 "\n" 678 ], 679 [ 680 "StartTag", 681 "body", 682 {} 683 ], 684 [ 685 "Character", 686 "\n" 687 ], 688 [ 689 "StartTag", 690 "b", 691 {} 692 ], 693 [ 694 "StartTag", 695 "nobr", 696 {} 697 ], 698 [ 699 "StartTag", 700 "div", 701 {} 702 ], 703 [ 704 "Character", 705 "This text is in a div inside a nobr" 706 ], 707 [ 708 "EndTag", 709 "nobr" 710 ], 711 [ 712 "Character", 713 "More text that should not be in the nobr, i.e., the\nnobr should have closed the div inside it implicitly. " 714 ], 715 [ 716 "EndTag", 717 "b" 718 ], 719 [ 720 "StartTag", 721 "pre", 722 {} 723 ], 724 [ 725 "Character", 726 "A pre tag outside everything else." 727 ], 728 [ 729 "EndTag", 730 "pre" 731 ], 732 [ 733 "Character", 734 "\n" 735 ], 736 [ 737 "EndTag", 738 "body" 739 ], 740 [ 741 "Character", 742 "\n" 743 ], 744 [ 745 "EndTag", 746 "html" 747 ] 748 ] 749 } 750 ] 751}