| 5 |
lars |
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 |
});
|