2014-08-18 17:45:43 +04:00
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
( function ( mod ) {
if ( typeof exports == "object" && typeof module == "object" ) // CommonJS
2014-10-27 10:49:58 +03:00
mod ( require ( "../../lib/codemirror" , "./xml-hint" ) ) ;
2014-08-18 17:45:43 +04:00
else if ( typeof define == "function" && define . amd ) // AMD
2014-10-27 10:49:58 +03:00
define ( [ "../../lib/codemirror" , "./xml-hint" ] , mod ) ;
2014-08-18 17:45:43 +04:00
else // Plain browser env
mod ( CodeMirror ) ;
} ) ( function ( CodeMirror ) {
"use strict" ;
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 ( " " ) ;
var targets = [ "_blank" , "_self" , "_top" , "_parent" ] ;
var charsets = [ "ascii" , "utf-8" , "utf-16" , "latin1" , "latin1" ] ;
var methods = [ "get" , "post" , "put" , "delete" ] ;
var encs = [ "application/x-www-form-urlencoded" , "multipart/form-data" , "text/plain" ] ;
var media = [ "all" , "screen" , "print" , "embossed" , "braille" , "handheld" , "print" , "projection" , "screen" , "tty" , "tv" , "speech" ,
"3d-glasses" , "resolution [>][<][=] [X]" , "device-aspect-ratio: X/Y" , "orientation:portrait" ,
"orientation:landscape" , "device-height: [X]" , "device-width: [X]" ] ;
var s = { attrs : { } } ; // Simple tag, reused for a whole lot of tags
var data = {
a : {
attrs : {
href : null , ping : null , type : null ,
media : media ,
target : targets ,
hreflang : langs
}
} ,
abbr : s ,
acronym : s ,
address : s ,
applet : s ,
area : {
attrs : {
alt : null , coords : null , href : null , target : null , ping : null ,
media : media , hreflang : langs , type : null ,
shape : [ "default" , "rect" , "circle" , "poly" ]
}
} ,
article : s ,
aside : s ,
audio : {
attrs : {
src : null , mediagroup : null ,
crossorigin : [ "anonymous" , "use-credentials" ] ,
preload : [ "none" , "metadata" , "auto" ] ,
autoplay : [ "" , "autoplay" ] ,
loop : [ "" , "loop" ] ,
controls : [ "" , "controls" ]
}
} ,
b : s ,
base : { attrs : { href : null , target : targets } } ,
basefont : s ,
bdi : s ,
bdo : s ,
big : s ,
blockquote : { attrs : { cite : null } } ,
body : s ,
br : s ,
button : {
attrs : {
form : null , formaction : null , name : null , value : null ,
autofocus : [ "" , "autofocus" ] ,
disabled : [ "" , "autofocus" ] ,
formenctype : encs ,
formmethod : methods ,
formnovalidate : [ "" , "novalidate" ] ,
formtarget : targets ,
type : [ "submit" , "reset" , "button" ]
}
} ,
canvas : { attrs : { width : null , height : null } } ,
caption : s ,
center : s ,
cite : s ,
code : s ,
col : { attrs : { span : null } } ,
colgroup : { attrs : { span : null } } ,
command : {
attrs : {
type : [ "command" , "checkbox" , "radio" ] ,
label : null , icon : null , radiogroup : null , command : null , title : null ,
disabled : [ "" , "disabled" ] ,
checked : [ "" , "checked" ]
}
} ,
data : { attrs : { value : null } } ,
datagrid : { attrs : { disabled : [ "" , "disabled" ] , multiple : [ "" , "multiple" ] } } ,
datalist : { attrs : { data : null } } ,
dd : s ,
del : { attrs : { cite : null , datetime : null } } ,
details : { attrs : { open : [ "" , "open" ] } } ,
dfn : s ,
dir : s ,
div : s ,
dl : s ,
dt : s ,
em : s ,
embed : { attrs : { src : null , type : null , width : null , height : null } } ,
eventsource : { attrs : { src : null } } ,
fieldset : { attrs : { disabled : [ "" , "disabled" ] , form : null , name : null } } ,
figcaption : s ,
figure : s ,
font : s ,
footer : s ,
form : {
attrs : {
action : null , name : null ,
"accept-charset" : charsets ,
autocomplete : [ "on" , "off" ] ,
enctype : encs ,
method : methods ,
novalidate : [ "" , "novalidate" ] ,
target : targets
}
} ,
frame : s ,
frameset : s ,
h1 : s , h2 : s , h3 : s , h4 : s , h5 : s , h6 : s ,
head : {
attrs : { } ,
children : [ "title" , "base" , "link" , "style" , "meta" , "script" , "noscript" , "command" ]
} ,
header : s ,
hgroup : s ,
hr : s ,
html : {
attrs : { manifest : null } ,
children : [ "head" , "body" ]
} ,
i : s ,
iframe : {
attrs : {
src : null , srcdoc : null , name : null , width : null , height : null ,
sandbox : [ "allow-top-navigation" , "allow-same-origin" , "allow-forms" , "allow-scripts" ] ,
seamless : [ "" , "seamless" ]
}
} ,
img : {
attrs : {
alt : null , src : null , ismap : null , usemap : null , width : null , height : null ,
crossorigin : [ "anonymous" , "use-credentials" ]
}
} ,
input : {
attrs : {
alt : null , dirname : null , form : null , formaction : null ,
height : null , list : null , max : null , maxlength : null , min : null ,
name : null , pattern : null , placeholder : null , size : null , src : null ,
step : null , value : null , width : null ,
accept : [ "audio/*" , "video/*" , "image/*" ] ,
autocomplete : [ "on" , "off" ] ,
autofocus : [ "" , "autofocus" ] ,
checked : [ "" , "checked" ] ,
disabled : [ "" , "disabled" ] ,
formenctype : encs ,
formmethod : methods ,
formnovalidate : [ "" , "novalidate" ] ,
formtarget : targets ,
multiple : [ "" , "multiple" ] ,
readonly : [ "" , "readonly" ] ,
required : [ "" , "required" ] ,
type : [ "hidden" , "text" , "search" , "tel" , "url" , "email" , "password" , "datetime" , "date" , "month" ,
"week" , "time" , "datetime-local" , "number" , "range" , "color" , "checkbox" , "radio" ,
"file" , "submit" , "image" , "reset" , "button" ]
}
} ,
ins : { attrs : { cite : null , datetime : null } } ,
kbd : s ,
keygen : {
attrs : {
challenge : null , form : null , name : null ,
autofocus : [ "" , "autofocus" ] ,
disabled : [ "" , "disabled" ] ,
keytype : [ "RSA" ]
}
} ,
label : { attrs : { "for" : null , form : null } } ,
legend : s ,
li : { attrs : { value : null } } ,
link : {
attrs : {
href : null , type : null ,
hreflang : langs ,
media : media ,
sizes : [ "all" , "16x16" , "16x16 32x32" , "16x16 32x32 64x64" ]
}
} ,
map : { attrs : { name : null } } ,
mark : s ,
menu : { attrs : { label : null , type : [ "list" , "context" , "toolbar" ] } } ,
meta : {
attrs : {
content : null ,
charset : charsets ,
name : [ "viewport" , "application-name" , "author" , "description" , "generator" , "keywords" ] ,
"http-equiv" : [ "content-language" , "content-type" , "default-style" , "refresh" ]
}
} ,
meter : { attrs : { value : null , min : null , low : null , high : null , max : null , optimum : null } } ,
nav : s ,
noframes : s ,
noscript : s ,
object : {
attrs : {
data : null , type : null , name : null , usemap : null , form : null , width : null , height : null ,
typemustmatch : [ "" , "typemustmatch" ]
}
} ,
ol : { attrs : { reversed : [ "" , "reversed" ] , start : null , type : [ "1" , "a" , "A" , "i" , "I" ] } } ,
optgroup : { attrs : { disabled : [ "" , "disabled" ] , label : null } } ,
option : { attrs : { disabled : [ "" , "disabled" ] , label : null , selected : [ "" , "selected" ] , value : null } } ,
output : { attrs : { "for" : null , form : null , name : null } } ,
p : s ,
param : { attrs : { name : null , value : null } } ,
pre : s ,
progress : { attrs : { value : null , max : null } } ,
q : { attrs : { cite : null } } ,
rp : s ,
rt : s ,
ruby : s ,
s : s ,
samp : s ,
script : {
attrs : {
type : [ "text/javascript" ] ,
src : null ,
async : [ "" , "async" ] ,
defer : [ "" , "defer" ] ,
charset : charsets
}
} ,
section : s ,
select : {
attrs : {
form : null , name : null , size : null ,
autofocus : [ "" , "autofocus" ] ,
disabled : [ "" , "disabled" ] ,
multiple : [ "" , "multiple" ]
}
} ,
small : s ,
source : { attrs : { src : null , type : null , media : null } } ,
span : s ,
strike : s ,
strong : s ,
style : {
attrs : {
type : [ "text/css" ] ,
media : media ,
scoped : null
}
} ,
sub : s ,
summary : s ,
sup : s ,
table : s ,
tbody : s ,
td : { attrs : { colspan : null , rowspan : null , headers : null } } ,
textarea : {
attrs : {
dirname : null , form : null , maxlength : null , name : null , placeholder : null ,
rows : null , cols : null ,
autofocus : [ "" , "autofocus" ] ,
disabled : [ "" , "disabled" ] ,
readonly : [ "" , "readonly" ] ,
required : [ "" , "required" ] ,
wrap : [ "soft" , "hard" ]
}
} ,
tfoot : s ,
th : { attrs : { colspan : null , rowspan : null , headers : null , scope : [ "row" , "col" , "rowgroup" , "colgroup" ] } } ,
thead : s ,
time : { attrs : { datetime : null } } ,
title : s ,
tr : s ,
track : {
attrs : {
src : null , label : null , "default" : null ,
kind : [ "subtitles" , "captions" , "descriptions" , "chapters" , "metadata" ] ,
srclang : langs
}
} ,
tt : s ,
u : s ,
ul : s ,
"var" : s ,
video : {
attrs : {
src : null , poster : null , width : null , height : null ,
crossorigin : [ "anonymous" , "use-credentials" ] ,
preload : [ "auto" , "metadata" , "none" ] ,
autoplay : [ "" , "autoplay" ] ,
mediagroup : [ "movie" ] ,
muted : [ "" , "muted" ] ,
controls : [ "" , "controls" ]
}
} ,
wbr : s
} ;
var globalAttrs = {
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" ] ,
"class" : null ,
contenteditable : [ "true" , "false" ] ,
contextmenu : null ,
dir : [ "ltr" , "rtl" , "auto" ] ,
draggable : [ "true" , "false" , "auto" ] ,
dropzone : [ "copy" , "move" , "link" , "string:" , "file:" ] ,
hidden : [ "hidden" ] ,
id : null ,
inert : [ "inert" ] ,
itemid : null ,
itemprop : null ,
itemref : null ,
itemscope : [ "itemscope" ] ,
itemtype : null ,
lang : [ "en" , "es" ] ,
spellcheck : [ "true" , "false" ] ,
style : null ,
tabindex : [ "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ] ,
title : null ,
translate : [ "yes" , "no" ] ,
onclick : null ,
rel : [ "stylesheet" , "alternate" , "author" , "bookmark" , "help" , "license" , "next" , "nofollow" , "noreferrer" , "prefetch" , "prev" , "search" , "tag" ]
} ;
function populate ( obj ) {
for ( var attr in globalAttrs ) if ( globalAttrs . hasOwnProperty ( attr ) )
obj . attrs [ attr ] = globalAttrs [ attr ] ;
}
populate ( s ) ;
for ( var tag in data ) if ( data . hasOwnProperty ( tag ) && data [ tag ] != s )
populate ( data [ tag ] ) ;
CodeMirror . htmlSchema = data ;
function htmlHint ( cm , options ) {
var local = { schemaInfo : data } ;
if ( options ) for ( var opt in options ) local [ opt ] = options [ opt ] ;
return CodeMirror . hint . xml ( cm , local ) ;
}
CodeMirror . registerHelper ( "hint" , "html" , htmlHint ) ;
} ) ;