UNPKG

2.14 kBJavaScriptView Raw
1hljs.registerLanguage("xml",(()=>{"use strict";function e(e){
2return e?"string"==typeof e?e:e.source:null}function n(e){return a("(?=",e,")")}
3function a(...n){return n.map((n=>e(n))).join("")}function s(...n){
4return"("+((e=>{const n=e[e.length-1]
5;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}
6})(n).capture?"":"?:")+n.map((n=>e(n))).join("|")+")"}return e=>{
7const t=a(/[A-Z_]/,a("(?:",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={
8className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},c={begin:/\s/,
9contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
10},r=e.inherit(c,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{
11className:"string"}),g=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),m={
12endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",
13begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
14className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{
15begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
16name:"HTML, XML",
17aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
18case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,
19relevance:10,contains:[c,g,l,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",
20begin:/<![a-z]/,end:/>/,contains:[c,r,g,l]}]}]},e.COMMENT(/<!--/,/-->/,{
21relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{
22className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",
23begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{
24end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",
25begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{
26end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{
27className:"tag",begin:/<>|<\/>/},{className:"tag",
28begin:a(/</,n(a(t,s(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",
29begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))),
30contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,
31endsParent:!0}]}]}}})());
\No newline at end of file