MediaWiki:Highlight-js/languages/xquery.js

/** * Language: XQuery * Author: Dirk Kirsten  * Description: Supports XQuery 3.1 including XQuery Update 3, so also XPath (as it is a superset) * Category: functional */ window.dev.highlight.registerLanguage('xquery', 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 = {    begin: /\$[a-zA-Z0-9\-]+/  };

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: 'meta', begin: '%\\w+' };

var COMMENT = { className: 'comment', begin: '\\(:', end: ':\\)', relevance: 10, contains: [ {       className: 'doctag', 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 }; }); /** **/