X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=parse-html.coffee;h=5dc05a9eb271b2fabcd671e3bb09ddfbb77d2239;hb=d94782242ab0addd8ba355c0eccab9c97418c320;hp=73eda84ffabceecd283782f1e4d7a90a290d10b9;hpb=af702500dd54507b24184075a7fb7c1f5acf70e5;p=peach-html5-editor.git diff --git a/parse-html.coffee b/parse-html.coffee index 73eda84..5dc05a9 100644 --- a/parse-html.coffee +++ b/parse-html.coffee @@ -340,14 +340,17 @@ special_elements = { h2:NS_HTML, h3:NS_HTML, h4:NS_HTML, h5:NS_HTML, h6:NS_HTML, head:NS_HTML, header:NS_HTML, hgroup:NS_HTML, hr:NS_HTML, html:NS_HTML, iframe:NS_HTML, img:NS_HTML, input:NS_HTML, isindex:NS_HTML, li:NS_HTML, link:NS_HTML, - listing:NS_HTML, main:NS_HTML, marquee:NS_HTML, meta:NS_HTML, nav:NS_HTML, - noembed:NS_HTML, noframes:NS_HTML, noscript:NS_HTML, object:NS_HTML, - ol:NS_HTML, p:NS_HTML, param:NS_HTML, plaintext:NS_HTML, pre:NS_HTML, - script:NS_HTML, section:NS_HTML, select:NS_HTML, source:NS_HTML, - style:NS_HTML, summary:NS_HTML, table:NS_HTML, tbody:NS_HTML, td:NS_HTML, - template:NS_HTML, textarea:NS_HTML, tfoot:NS_HTML, th:NS_HTML, - thead:NS_HTML, title:NS_HTML, tr:NS_HTML, track:NS_HTML, ul:NS_HTML, - wbr:NS_HTML, xmp:NS_HTML, + listing:NS_HTML, main:NS_HTML, marquee:NS_HTML, + + menu:NS_HTML,menuitem:NS_HTML, # WATWG adds these + + meta:NS_HTML, nav:NS_HTML, noembed:NS_HTML, noframes:NS_HTML, + noscript:NS_HTML, object:NS_HTML, ol:NS_HTML, p:NS_HTML, param:NS_HTML, + plaintext:NS_HTML, pre:NS_HTML, script:NS_HTML, section:NS_HTML, + select:NS_HTML, source:NS_HTML, style:NS_HTML, summary:NS_HTML, + table:NS_HTML, tbody:NS_HTML, td:NS_HTML, template:NS_HTML, + textarea:NS_HTML, tfoot:NS_HTML, th:NS_HTML, thead:NS_HTML, title:NS_HTML, + tr:NS_HTML, track:NS_HTML, ul:NS_HTML, wbr:NS_HTML, xmp:NS_HTML, # MathML: mi:NS_MATHML, mo:NS_MATHML, mn:NS_MATHML, ms:NS_MATHML, mtext:NS_MATHML, @@ -2202,7 +2205,8 @@ parse_html = (args) -> ins_mode_in_table = (t) -> switch t.type when TYPE_TEXT - if t.name is 'table' or t.name is 'tbody' or t.name is 'tfoot' or t.name is 'thead' or t.name is 'tr' + if (open_els[0].name is 'table' or open_els[0].name is 'tbody' or open_els[0].name is 'tfoot' or open_els[0].name is 'thead' or open_els[0].name is 'tr') and open_els[0].namespace is NS_HTML + pending_table_character_tokens = [] original_ins_mode = ins_mode ins_mode = ins_mode_in_table_text process_token t @@ -2292,7 +2296,7 @@ parse_html = (args) -> # 8.2.5.4.10 http://www.w3.org/TR/html5/syntax.html#parsing-main-intabletext ins_mode_in_table_text = (t) -> if t.type is TYPE_TEXT and t.text is "\u0000" - # huh? I thought the tokenizer didn't emit these + # from javascript? parse_error() return if t.type is TYPE_TEXT @@ -2309,8 +2313,8 @@ parse_html = (args) -> insert_character old else for old in pending_table_character_tokens - ins_mode_table_else old - pending_table_character_tokens = [] # FIXME test (spec doesn't say this) + ins_mode_in_table_else old + pending_table_character_tokens = [] ins_mode = original_ins_mode process_token t