72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
|
module.exports = function(hljs) {
|
||
|
var KEYWORDS = 'for let if while then else return where group by xquery encoding version' +
|
||
|
'module namespace boundary-space preserve strip default collation base-uri ordering' +
|
||
|
'copy-namespaces order declare import schema namespace function option in allowing empty' +
|
||
|
'at tumbling window sliding window start when only end when previous next stable ascending' +
|
||
|
'descending empty greatest least some every satisfies switch case typeswitch try catch and' +
|
||
|
'or to union intersect instance of treat as castable cast map array delete insert into' +
|
||
|
'replace value rename copy modify update';
|
||
|
var LITERAL = 'false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute';
|
||
|
var VAR = {
|
||
|
className: 'variable',
|
||
|
begin: /\$[a-zA-Z0-9\-]+/,
|
||
|
relevance: 5
|
||
|
};
|
||
|
|
||
|
var NUMBER = {
|
||
|
className: 'number',
|
||
|
begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b',
|
||
|
relevance: 0
|
||
|
};
|
||
|
|
||
|
var STRING = {
|
||
|
className: 'string',
|
||
|
variants: [
|
||
|
{begin: /"/, end: /"/, contains: [{begin: /""/, relevance: 0}]},
|
||
|
{begin: /'/, end: /'/, contains: [{begin: /''/, relevance: 0}]}
|
||
|
]
|
||
|
};
|
||
|
|
||
|
var ANNOTATION = {
|
||
|
className: 'decorator',
|
||
|
begin: '%\\w+'
|
||
|
};
|
||
|
|
||
|
var COMMENT = {
|
||
|
className: 'comment',
|
||
|
begin: '\\(:', end: ':\\)',
|
||
|
relevance: 10,
|
||
|
contains: [
|
||
|
{
|
||
|
className: 'doc', begin: '@\\w+'
|
||
|
}
|
||
|
]
|
||
|
};
|
||
|
|
||
|
var METHOD = {
|
||
|
begin: '{', end: '}'
|
||
|
};
|
||
|
|
||
|
var CONTAINS = [
|
||
|
VAR,
|
||
|
STRING,
|
||
|
NUMBER,
|
||
|
COMMENT,
|
||
|
ANNOTATION,
|
||
|
METHOD
|
||
|
];
|
||
|
METHOD.contains = CONTAINS;
|
||
|
|
||
|
|
||
|
return {
|
||
|
aliases: ['xpath', 'xq'],
|
||
|
case_insensitive: false,
|
||
|
lexemes: /[a-zA-Z\$][a-zA-Z0-9_:\-]*/,
|
||
|
illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,
|
||
|
keywords: {
|
||
|
keyword: KEYWORDS,
|
||
|
literal: LITERAL
|
||
|
},
|
||
|
contains: CONTAINS
|
||
|
};
|
||
|
};
|