html-hint.js (11341B)
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 // Distributed under an MIT license: http://codemirror.net/LICENSE 3 4 (function(mod) { 5 if (typeof exports == "object" && typeof module == "object") // CommonJS 6 mod(require("../../lib/codemirror"), require("./xml-hint")); 7 else if (typeof define == "function" && define.amd) // AMD 8 define(["../../lib/codemirror", "./xml-hint"], mod); 9 else // Plain browser env 10 mod(CodeMirror); 11 })(function(CodeMirror) { 12 "use strict"; 13 14 var langs = "ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "); 15 var targets = ["_blank", "_self", "_top", "_parent"]; 16 var charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"]; 17 var methods = ["get", "post", "put", "delete"]; 18 var encs = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"]; 19 var media = ["all", "screen", "print", "embossed", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "speech", 20 "3d-glasses", "resolution [>][<][=] [X]", "device-aspect-ratio: X/Y", "orientation:portrait", 21 "orientation:landscape", "device-height: [X]", "device-width: [X]"]; 22 var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags 23 24 var data = { 25 a: { 26 attrs: { 27 href: null, ping: null, type: null, 28 media: media, 29 target: targets, 30 hreflang: langs 31 } 32 }, 33 abbr: s, 34 acronym: s, 35 address: s, 36 applet: s, 37 area: { 38 attrs: { 39 alt: null, coords: null, href: null, target: null, ping: null, 40 media: media, hreflang: langs, type: null, 41 shape: ["default", "rect", "circle", "poly"] 42 } 43 }, 44 article: s, 45 aside: s, 46 audio: { 47 attrs: { 48 src: null, mediagroup: null, 49 crossorigin: ["anonymous", "use-credentials"], 50 preload: ["none", "metadata", "auto"], 51 autoplay: ["", "autoplay"], 52 loop: ["", "loop"], 53 controls: ["", "controls"] 54 } 55 }, 56 b: s, 57 base: { attrs: { href: null, target: targets } }, 58 basefont: s, 59 bdi: s, 60 bdo: s, 61 big: s, 62 blockquote: { attrs: { cite: null } }, 63 body: s, 64 br: s, 65 button: { 66 attrs: { 67 form: null, formaction: null, name: null, value: null, 68 autofocus: ["", "autofocus"], 69 disabled: ["", "autofocus"], 70 formenctype: encs, 71 formmethod: methods, 72 formnovalidate: ["", "novalidate"], 73 formtarget: targets, 74 type: ["submit", "reset", "button"] 75 } 76 }, 77 canvas: { attrs: { width: null, height: null } }, 78 caption: s, 79 center: s, 80 cite: s, 81 code: s, 82 col: { attrs: { span: null } }, 83 colgroup: { attrs: { span: null } }, 84 command: { 85 attrs: { 86 type: ["command", "checkbox", "radio"], 87 label: null, icon: null, radiogroup: null, command: null, title: null, 88 disabled: ["", "disabled"], 89 checked: ["", "checked"] 90 } 91 }, 92 data: { attrs: { value: null } }, 93 datagrid: { attrs: { disabled: ["", "disabled"], multiple: ["", "multiple"] } }, 94 datalist: { attrs: { data: null } }, 95 dd: s, 96 del: { attrs: { cite: null, datetime: null } }, 97 details: { attrs: { open: ["", "open"] } }, 98 dfn: s, 99 dir: s, 100 div: s, 101 dl: s, 102 dt: s, 103 em: s, 104 embed: { attrs: { src: null, type: null, width: null, height: null } }, 105 eventsource: { attrs: { src: null } }, 106 fieldset: { attrs: { disabled: ["", "disabled"], form: null, name: null } }, 107 figcaption: s, 108 figure: s, 109 font: s, 110 footer: s, 111 form: { 112 attrs: { 113 action: null, name: null, 114 "accept-charset": charsets, 115 autocomplete: ["on", "off"], 116 enctype: encs, 117 method: methods, 118 novalidate: ["", "novalidate"], 119 target: targets 120 } 121 }, 122 frame: s, 123 frameset: s, 124 h1: s, h2: s, h3: s, h4: s, h5: s, h6: s, 125 head: { 126 attrs: {}, 127 children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"] 128 }, 129 header: s, 130 hgroup: s, 131 hr: s, 132 html: { 133 attrs: { manifest: null }, 134 children: ["head", "body"] 135 }, 136 i: s, 137 iframe: { 138 attrs: { 139 src: null, srcdoc: null, name: null, width: null, height: null, 140 sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"], 141 seamless: ["", "seamless"] 142 } 143 }, 144 img: { 145 attrs: { 146 alt: null, src: null, ismap: null, usemap: null, width: null, height: null, 147 crossorigin: ["anonymous", "use-credentials"] 148 } 149 }, 150 input: { 151 attrs: { 152 alt: null, dirname: null, form: null, formaction: null, 153 height: null, list: null, max: null, maxlength: null, min: null, 154 name: null, pattern: null, placeholder: null, size: null, src: null, 155 step: null, value: null, width: null, 156 accept: ["audio/*", "video/*", "image/*"], 157 autocomplete: ["on", "off"], 158 autofocus: ["", "autofocus"], 159 checked: ["", "checked"], 160 disabled: ["", "disabled"], 161 formenctype: encs, 162 formmethod: methods, 163 formnovalidate: ["", "novalidate"], 164 formtarget: targets, 165 multiple: ["", "multiple"], 166 readonly: ["", "readonly"], 167 required: ["", "required"], 168 type: ["hidden", "text", "search", "tel", "url", "email", "password", "datetime", "date", "month", 169 "week", "time", "datetime-local", "number", "range", "color", "checkbox", "radio", 170 "file", "submit", "image", "reset", "button"] 171 } 172 }, 173 ins: { attrs: { cite: null, datetime: null } }, 174 kbd: s, 175 keygen: { 176 attrs: { 177 challenge: null, form: null, name: null, 178 autofocus: ["", "autofocus"], 179 disabled: ["", "disabled"], 180 keytype: ["RSA"] 181 } 182 }, 183 label: { attrs: { "for": null, form: null } }, 184 legend: s, 185 li: { attrs: { value: null } }, 186 link: { 187 attrs: { 188 href: null, type: null, 189 hreflang: langs, 190 media: media, 191 sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"] 192 } 193 }, 194 map: { attrs: { name: null } }, 195 mark: s, 196 menu: { attrs: { label: null, type: ["list", "context", "toolbar"] } }, 197 meta: { 198 attrs: { 199 content: null, 200 charset: charsets, 201 name: ["viewport", "application-name", "author", "description", "generator", "keywords"], 202 "http-equiv": ["content-language", "content-type", "default-style", "refresh"] 203 } 204 }, 205 meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } }, 206 nav: s, 207 noframes: s, 208 noscript: s, 209 object: { 210 attrs: { 211 data: null, type: null, name: null, usemap: null, form: null, width: null, height: null, 212 typemustmatch: ["", "typemustmatch"] 213 } 214 }, 215 ol: { attrs: { reversed: ["", "reversed"], start: null, type: ["1", "a", "A", "i", "I"] } }, 216 optgroup: { attrs: { disabled: ["", "disabled"], label: null } }, 217 option: { attrs: { disabled: ["", "disabled"], label: null, selected: ["", "selected"], value: null } }, 218 output: { attrs: { "for": null, form: null, name: null } }, 219 p: s, 220 param: { attrs: { name: null, value: null } }, 221 pre: s, 222 progress: { attrs: { value: null, max: null } }, 223 q: { attrs: { cite: null } }, 224 rp: s, 225 rt: s, 226 ruby: s, 227 s: s, 228 samp: s, 229 script: { 230 attrs: { 231 type: ["text/javascript"], 232 src: null, 233 async: ["", "async"], 234 defer: ["", "defer"], 235 charset: charsets 236 } 237 }, 238 section: s, 239 select: { 240 attrs: { 241 form: null, name: null, size: null, 242 autofocus: ["", "autofocus"], 243 disabled: ["", "disabled"], 244 multiple: ["", "multiple"] 245 } 246 }, 247 small: s, 248 source: { attrs: { src: null, type: null, media: null } }, 249 span: s, 250 strike: s, 251 strong: s, 252 style: { 253 attrs: { 254 type: ["text/css"], 255 media: media, 256 scoped: null 257 } 258 }, 259 sub: s, 260 summary: s, 261 sup: s, 262 table: s, 263 tbody: s, 264 td: { attrs: { colspan: null, rowspan: null, headers: null } }, 265 textarea: { 266 attrs: { 267 dirname: null, form: null, maxlength: null, name: null, placeholder: null, 268 rows: null, cols: null, 269 autofocus: ["", "autofocus"], 270 disabled: ["", "disabled"], 271 readonly: ["", "readonly"], 272 required: ["", "required"], 273 wrap: ["soft", "hard"] 274 } 275 }, 276 tfoot: s, 277 th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ["row", "col", "rowgroup", "colgroup"] } }, 278 thead: s, 279 time: { attrs: { datetime: null } }, 280 title: s, 281 tr: s, 282 track: { 283 attrs: { 284 src: null, label: null, "default": null, 285 kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"], 286 srclang: langs 287 } 288 }, 289 tt: s, 290 u: s, 291 ul: s, 292 "var": s, 293 video: { 294 attrs: { 295 src: null, poster: null, width: null, height: null, 296 crossorigin: ["anonymous", "use-credentials"], 297 preload: ["auto", "metadata", "none"], 298 autoplay: ["", "autoplay"], 299 mediagroup: ["movie"], 300 muted: ["", "muted"], 301 controls: ["", "controls"] 302 } 303 }, 304 wbr: s 305 }; 306 307 var globalAttrs = { 308 accesskey: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], 309 "class": null, 310 contenteditable: ["true", "false"], 311 contextmenu: null, 312 dir: ["ltr", "rtl", "auto"], 313 draggable: ["true", "false", "auto"], 314 dropzone: ["copy", "move", "link", "string:", "file:"], 315 hidden: ["hidden"], 316 id: null, 317 inert: ["inert"], 318 itemid: null, 319 itemprop: null, 320 itemref: null, 321 itemscope: ["itemscope"], 322 itemtype: null, 323 lang: ["en", "es"], 324 spellcheck: ["true", "false"], 325 style: null, 326 tabindex: ["1", "2", "3", "4", "5", "6", "7", "8", "9"], 327 title: null, 328 translate: ["yes", "no"], 329 onclick: null, 330 rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"] 331 }; 332 function populate(obj) { 333 for (var attr in globalAttrs) if (globalAttrs.hasOwnProperty(attr)) 334 obj.attrs[attr] = globalAttrs[attr]; 335 } 336 337 populate(s); 338 for (var tag in data) if (data.hasOwnProperty(tag) && data[tag] != s) 339 populate(data[tag]); 340 341 CodeMirror.htmlSchema = data; 342 function htmlHint(cm, options) { 343 var local = {schemaInfo: data}; 344 if (options) for (var opt in options) local[opt] = options[opt]; 345 return CodeMirror.hint.xml(cm, local); 346 } 347 CodeMirror.registerHelper("hint", "html", htmlHint); 348 });