96 lines
No EOL
1.3 KiB
JavaScript
96 lines
No EOL
1.3 KiB
JavaScript
(function() {
|
|
|
|
window.XML = {};
|
|
|
|
// regexp must not have capturing parentheses
|
|
// regexps are ordered -> the first match is used
|
|
|
|
XML.RULES = {
|
|
start :
|
|
[
|
|
{
|
|
token: "text",
|
|
regex: "<\\!\\[CDATA\\[",
|
|
next: "cdata"
|
|
},
|
|
{
|
|
token: "xml_pe",
|
|
regex: "<\\?.*?\\?>"
|
|
},
|
|
{
|
|
token: "comment",
|
|
regex: "<\\!--",
|
|
next: "comment"
|
|
},
|
|
{
|
|
token: "text", // opening tag
|
|
regex: "<",
|
|
next: "tag"
|
|
},
|
|
{
|
|
token: "text",
|
|
regex: "\\s+"
|
|
},
|
|
{
|
|
token: "text",
|
|
regex: ".+"
|
|
}
|
|
],
|
|
|
|
tag:
|
|
[
|
|
{
|
|
token: "text",
|
|
regex: ">",
|
|
next: "start"
|
|
},
|
|
{
|
|
token: "keyword",
|
|
regex: "[-_a-zA-Z0-9:]+"
|
|
},
|
|
{
|
|
token: "text",
|
|
regex: "\\s+"
|
|
},
|
|
{
|
|
token: "string",
|
|
regex: '".*?"'
|
|
},
|
|
{
|
|
token: "string",
|
|
regex: "'.*?'"
|
|
}
|
|
],
|
|
|
|
cdata:
|
|
[
|
|
{
|
|
token: "text",
|
|
regex: "\\]\\]>",
|
|
next: "start"
|
|
},
|
|
{
|
|
token: "text",
|
|
regex: "\\s+"
|
|
},
|
|
{
|
|
token: "text",
|
|
regex: ".+"
|
|
}
|
|
],
|
|
|
|
comment:
|
|
[
|
|
{
|
|
token: "comment",
|
|
regex: ".*?-->",
|
|
next: "start"
|
|
},
|
|
{
|
|
token: "comment",
|
|
regex: ".+"
|
|
}
|
|
]
|
|
};
|
|
|
|
})(); |