1'use strict'; 2 3var NS = exports.NAMESPACES = { 4 HTML: 'http://www.w3.org/1999/xhtml', 5 MATHML: 'http://www.w3.org/1998/Math/MathML', 6 SVG: 'http://www.w3.org/2000/svg', 7 XLINK: 'http://www.w3.org/1999/xlink', 8 XML: 'http://www.w3.org/XML/1998/namespace', 9 XMLNS: 'http://www.w3.org/2000/xmlns/' 10}; 11 12exports.ATTRS = { 13 TYPE: 'type', 14 ACTION: 'action', 15 ENCODING: 'encoding', 16 PROMPT: 'prompt', 17 NAME: 'name', 18 COLOR: 'color', 19 FACE: 'face', 20 SIZE: 'size' 21}; 22 23var $ = exports.TAG_NAMES = { 24 A: 'a', 25 ADDRESS: 'address', 26 ANNOTATION_XML: 'annotation-xml', 27 APPLET: 'applet', 28 AREA: 'area', 29 ARTICLE: 'article', 30 ASIDE: 'aside', 31 32 B: 'b', 33 BASE: 'base', 34 BASEFONT: 'basefont', 35 BGSOUND: 'bgsound', 36 BIG: 'big', 37 BLOCKQUOTE: 'blockquote', 38 BODY: 'body', 39 BR: 'br', 40 BUTTON: 'button', 41 42 CAPTION: 'caption', 43 CENTER: 'center', 44 CODE: 'code', 45 COL: 'col', 46 COLGROUP: 'colgroup', 47 COMMAND: 'command', 48 49 DD: 'dd', 50 DESC: 'desc', 51 DETAILS: 'details', 52 DIALOG: 'dialog', 53 DIR: 'dir', 54 DIV: 'div', 55 DL: 'dl', 56 DT: 'dt', 57 58 EM: 'em', 59 EMBED: 'embed', 60 61 FIELDSET: 'fieldset', 62 FIGCAPTION: 'figcaption', 63 FIGURE: 'figure', 64 FONT: 'font', 65 FOOTER: 'footer', 66 FOREIGN_OBJECT: 'foreignObject', 67 FORM: 'form', 68 FRAME: 'frame', 69 FRAMESET: 'frameset', 70 71 H1: 'h1', 72 H2: 'h2', 73 H3: 'h3', 74 H4: 'h4', 75 H5: 'h5', 76 H6: 'h6', 77 HEAD: 'head', 78 HEADER: 'header', 79 HGROUP: 'hgroup', 80 HR: 'hr', 81 HTML: 'html', 82 83 I: 'i', 84 IMG: 'img', 85 IMAGE: 'image', 86 INPUT: 'input', 87 IFRAME: 'iframe', 88 ISINDEX: 'isindex', 89 90 KEYGEN: 'keygen', 91 92 LABEL: 'label', 93 LI: 'li', 94 LINK: 'link', 95 LISTING: 'listing', 96 97 MAIN: 'main', 98 MALIGNMARK: 'malignmark', 99 MARQUEE: 'marquee', 100 MATH: 'math', 101 MENU: 'menu', 102 MENUITEM: 'menuitem', 103 META: 'meta', 104 MGLYPH: 'mglyph', 105 MI: 'mi', 106 MO: 'mo', 107 MN: 'mn', 108 MS: 'ms', 109 MTEXT: 'mtext', 110 111 NAV: 'nav', 112 NOBR: 'nobr', 113 NOFRAMES: 'noframes', 114 NOEMBED: 'noembed', 115 NOSCRIPT: 'noscript', 116 117 OBJECT: 'object', 118 OL: 'ol', 119 OPTGROUP: 'optgroup', 120 OPTION: 'option', 121 122 P: 'p', 123 PARAM: 'param', 124 PLAINTEXT: 'plaintext', 125 PRE: 'pre', 126 127 RP: 'rp', 128 RT: 'rt', 129 RUBY: 'ruby', 130 131 S: 's', 132 SCRIPT: 'script', 133 SECTION: 'section', 134 SELECT: 'select', 135 SOURCE: 'source', 136 SMALL: 'small', 137 SPAN: 'span', 138 STRIKE: 'strike', 139 STRONG: 'strong', 140 STYLE: 'style', 141 SUB: 'sub', 142 SUMMARY: 'summary', 143 SUP: 'sup', 144 145 TABLE: 'table', 146 TBODY: 'tbody', 147 TEMPLATE: 'template', 148 TEXTAREA: 'textarea', 149 TFOOT: 'tfoot', 150 TD: 'td', 151 TH: 'th', 152 THEAD: 'thead', 153 TITLE: 'title', 154 TR: 'tr', 155 TRACK: 'track', 156 TT: 'tt', 157 158 U: 'u', 159 UL: 'ul', 160 161 SVG: 'svg', 162 163 VAR: 'var', 164 165 WBR: 'wbr', 166 167 XMP: 'xmp' 168}; 169 170var SPECIAL_ELEMENTS = exports.SPECIAL_ELEMENTS = {}; 171 172SPECIAL_ELEMENTS[NS.HTML] = {}; 173SPECIAL_ELEMENTS[NS.HTML][$.ADDRESS] = true; 174SPECIAL_ELEMENTS[NS.HTML][$.APPLET] = true; 175SPECIAL_ELEMENTS[NS.HTML][$.AREA] = true; 176SPECIAL_ELEMENTS[NS.HTML][$.ARTICLE] = true; 177SPECIAL_ELEMENTS[NS.HTML][$.ASIDE] = true; 178SPECIAL_ELEMENTS[NS.HTML][$.BASE] = true; 179SPECIAL_ELEMENTS[NS.HTML][$.BASEFONT] = true; 180SPECIAL_ELEMENTS[NS.HTML][$.BGSOUND] = true; 181SPECIAL_ELEMENTS[NS.HTML][$.BLOCKQUOTE] = true; 182SPECIAL_ELEMENTS[NS.HTML][$.BODY] = true; 183SPECIAL_ELEMENTS[NS.HTML][$.BR] = true; 184SPECIAL_ELEMENTS[NS.HTML][$.BUTTON] = true; 185SPECIAL_ELEMENTS[NS.HTML][$.CAPTION] = true; 186SPECIAL_ELEMENTS[NS.HTML][$.CENTER] = true; 187SPECIAL_ELEMENTS[NS.HTML][$.COL] = true; 188SPECIAL_ELEMENTS[NS.HTML][$.COLGROUP] = true; 189SPECIAL_ELEMENTS[NS.HTML][$.DD] = true; 190SPECIAL_ELEMENTS[NS.HTML][$.DETAILS] = true; 191SPECIAL_ELEMENTS[NS.HTML][$.DIR] = true; 192SPECIAL_ELEMENTS[NS.HTML][$.DIV] = true; 193SPECIAL_ELEMENTS[NS.HTML][$.DL] = true; 194SPECIAL_ELEMENTS[NS.HTML][$.DT] = true; 195SPECIAL_ELEMENTS[NS.HTML][$.EMBED] = true; 196SPECIAL_ELEMENTS[NS.HTML][$.FIELDSET] = true; 197SPECIAL_ELEMENTS[NS.HTML][$.FIGCAPTION] = true; 198SPECIAL_ELEMENTS[NS.HTML][$.FIGURE] = true; 199SPECIAL_ELEMENTS[NS.HTML][$.FOOTER] = true; 200SPECIAL_ELEMENTS[NS.HTML][$.FORM] = true; 201SPECIAL_ELEMENTS[NS.HTML][$.FRAME] = true; 202SPECIAL_ELEMENTS[NS.HTML][$.FRAMESET] = true; 203SPECIAL_ELEMENTS[NS.HTML][$.H1] = true; 204SPECIAL_ELEMENTS[NS.HTML][$.H2] = true; 205SPECIAL_ELEMENTS[NS.HTML][$.H3] = true; 206SPECIAL_ELEMENTS[NS.HTML][$.H4] = true; 207SPECIAL_ELEMENTS[NS.HTML][$.H5] = true; 208SPECIAL_ELEMENTS[NS.HTML][$.H6] = true; 209SPECIAL_ELEMENTS[NS.HTML][$.HEAD] = true; 210SPECIAL_ELEMENTS[NS.HTML][$.HEADER] = true; 211SPECIAL_ELEMENTS[NS.HTML][$.HGROUP] = true; 212SPECIAL_ELEMENTS[NS.HTML][$.HR] = true; 213SPECIAL_ELEMENTS[NS.HTML][$.HTML] = true; 214SPECIAL_ELEMENTS[NS.HTML][$.IFRAME] = true; 215SPECIAL_ELEMENTS[NS.HTML][$.IMG] = true; 216SPECIAL_ELEMENTS[NS.HTML][$.INPUT] = true; 217SPECIAL_ELEMENTS[NS.HTML][$.ISINDEX] = true; 218SPECIAL_ELEMENTS[NS.HTML][$.LI] = true; 219SPECIAL_ELEMENTS[NS.HTML][$.LINK] = true; 220SPECIAL_ELEMENTS[NS.HTML][$.LISTING] = true; 221SPECIAL_ELEMENTS[NS.HTML][$.MAIN] = true; 222SPECIAL_ELEMENTS[NS.HTML][$.MARQUEE] = true; 223SPECIAL_ELEMENTS[NS.HTML][$.MENU] = true; 224SPECIAL_ELEMENTS[NS.HTML][$.MENUITEM] = true; 225SPECIAL_ELEMENTS[NS.HTML][$.META] = true; 226SPECIAL_ELEMENTS[NS.HTML][$.NAV] = true; 227SPECIAL_ELEMENTS[NS.HTML][$.NOEMBED] = true; 228SPECIAL_ELEMENTS[NS.HTML][$.NOFRAMES] = true; 229SPECIAL_ELEMENTS[NS.HTML][$.NOSCRIPT] = true; 230SPECIAL_ELEMENTS[NS.HTML][$.OBJECT] = true; 231SPECIAL_ELEMENTS[NS.HTML][$.OL] = true; 232SPECIAL_ELEMENTS[NS.HTML][$.P] = true; 233SPECIAL_ELEMENTS[NS.HTML][$.PARAM] = true; 234SPECIAL_ELEMENTS[NS.HTML][$.PLAINTEXT] = true; 235SPECIAL_ELEMENTS[NS.HTML][$.PRE] = true; 236SPECIAL_ELEMENTS[NS.HTML][$.SCRIPT] = true; 237SPECIAL_ELEMENTS[NS.HTML][$.SECTION] = true; 238SPECIAL_ELEMENTS[NS.HTML][$.SELECT] = true; 239SPECIAL_ELEMENTS[NS.HTML][$.SOURCE] = true; 240SPECIAL_ELEMENTS[NS.HTML][$.STYLE] = true; 241SPECIAL_ELEMENTS[NS.HTML][$.SUMMARY] = true; 242SPECIAL_ELEMENTS[NS.HTML][$.TABLE] = true; 243SPECIAL_ELEMENTS[NS.HTML][$.TBODY] = true; 244SPECIAL_ELEMENTS[NS.HTML][$.TD] = true; 245SPECIAL_ELEMENTS[NS.HTML][$.TEMPLATE] = true; 246SPECIAL_ELEMENTS[NS.HTML][$.TEXTAREA] = true; 247SPECIAL_ELEMENTS[NS.HTML][$.TFOOT] = true; 248SPECIAL_ELEMENTS[NS.HTML][$.TH] = true; 249SPECIAL_ELEMENTS[NS.HTML][$.THEAD] = true; 250SPECIAL_ELEMENTS[NS.HTML][$.TITLE] = true; 251SPECIAL_ELEMENTS[NS.HTML][$.TR] = true; 252SPECIAL_ELEMENTS[NS.HTML][$.TRACK] = true; 253SPECIAL_ELEMENTS[NS.HTML][$.UL] = true; 254SPECIAL_ELEMENTS[NS.HTML][$.WBR] = true; 255SPECIAL_ELEMENTS[NS.HTML][$.XMP] = true; 256 257SPECIAL_ELEMENTS[NS.MATHML] = {}; 258SPECIAL_ELEMENTS[NS.MATHML][$.MI] = true; 259SPECIAL_ELEMENTS[NS.MATHML][$.MO] = true; 260SPECIAL_ELEMENTS[NS.MATHML][$.MN] = true; 261SPECIAL_ELEMENTS[NS.MATHML][$.MS] = true; 262SPECIAL_ELEMENTS[NS.MATHML][$.MTEXT] = true; 263SPECIAL_ELEMENTS[NS.MATHML][$.ANNOTATION_XML] = true; 264 265SPECIAL_ELEMENTS[NS.SVG] = {}; 266SPECIAL_ELEMENTS[NS.SVG][$.TITLE] = true; 267SPECIAL_ELEMENTS[NS.SVG][$.FOREIGN_OBJECT] = true; 268SPECIAL_ELEMENTS[NS.SVG][$.DESC] = true; 269