xquery function

Mode xquery(
  1. Highlight hljs
)

Highlight.js language definition for xquery.

Implementation

Mode xquery(Highlight hljs) {
  return Mode(
    name: r'XQuery',
    aliases: [r'xpath', r'xq', r'xqm'],
    caseInsensitive: false,
    illegal: r'(proc)|(abstract)|(extends)|(until)|(#)',
    keywords: {
      r'$pattern': r'[a-zA-Z$][a-zA-Z0-9_:-]*',
      r'keyword': [
        r'module',
        r'schema',
        r'namespace',
        r'boundary-space',
        r'preserve',
        r'no-preserve',
        r'strip',
        r'default',
        r'collation',
        r'base-uri',
        r'ordering',
        r'context',
        r'decimal-format',
        r'decimal-separator',
        r'copy-namespaces',
        r'empty-sequence',
        r'except',
        r'exponent-separator',
        r'external',
        r'grouping-separator',
        r'inherit',
        r'no-inherit',
        r'lax',
        r'minus-sign',
        r'per-mille',
        r'percent',
        r'schema-attribute',
        r'schema-element',
        r'strict',
        r'unordered',
        r'zero-digit',
        r'declare',
        r'import',
        r'option',
        r'function',
        r'validate',
        r'variable',
        r'for',
        r'at',
        r'in',
        r'let',
        r'where',
        r'order',
        r'group',
        r'by',
        r'return',
        r'if',
        r'then',
        r'else',
        r'tumbling',
        r'sliding',
        r'window',
        r'start',
        r'when',
        r'only',
        r'end',
        r'previous',
        r'next',
        r'stable',
        r'ascending',
        r'descending',
        r'allowing',
        r'empty',
        r'greatest',
        r'least',
        r'some',
        r'every',
        r'satisfies',
        r'switch',
        r'case',
        r'typeswitch',
        r'try',
        r'catch',
        r'and',
        r'or',
        r'to',
        r'union',
        r'intersect',
        r'instance',
        r'of',
        r'treat',
        r'as',
        r'castable',
        r'cast',
        r'map',
        r'array',
        r'delete',
        r'insert',
        r'into',
        r'replace',
        r'value',
        r'rename',
        r'copy',
        r'modify',
        r'update',
      ],
      r'type': [
        r'item',
        r'document-node',
        r'node',
        r'attribute',
        r'document',
        r'element',
        r'comment',
        r'namespace',
        r'namespace-node',
        r'processing-instruction',
        r'text',
        r'construction',
        r'xs:anyAtomicType',
        r'xs:untypedAtomic',
        r'xs:duration',
        r'xs:time',
        r'xs:decimal',
        r'xs:float',
        r'xs:double',
        r'xs:gYearMonth',
        r'xs:gYear',
        r'xs:gMonthDay',
        r'xs:gMonth',
        r'xs:gDay',
        r'xs:boolean',
        r'xs:base64Binary',
        r'xs:hexBinary',
        r'xs:anyURI',
        r'xs:QName',
        r'xs:NOTATION',
        r'xs:dateTime',
        r'xs:dateTimeStamp',
        r'xs:date',
        r'xs:string',
        r'xs:normalizedString',
        r'xs:token',
        r'xs:language',
        r'xs:NMTOKEN',
        r'xs:Name',
        r'xs:NCName',
        r'xs:ID',
        r'xs:IDREF',
        r'xs:ENTITY',
        r'xs:integer',
        r'xs:nonPositiveInteger',
        r'xs:negativeInteger',
        r'xs:long',
        r'xs:int',
        r'xs:short',
        r'xs:byte',
        r'xs:nonNegativeInteger',
        r'xs:unisignedLong',
        r'xs:unsignedInt',
        r'xs:unsignedShort',
        r'xs:unsignedByte',
        r'xs:positiveInteger',
        r'xs:yearMonthDuration',
        r'xs:dayTimeDuration',
      ],
      r'literal': [
        r'eq',
        r'ne',
        r'lt',
        r'le',
        r'gt',
        r'ge',
        r'is',
        r'self::',
        r'child::',
        r'descendant::',
        r'descendant-or-self::',
        r'attribute::',
        r'following::',
        r'following-sibling::',
        r'parent::',
        r'ancestor::',
        r'ancestor-or-self::',
        r'preceding::',
        r'preceding-sibling::',
        r'NaN',
      ],
    },
    contains: [
      Mode(scope: r'variable', begin: r'[$][\w\-:]+'),
      Mode(
        scope: r'built_in',
        variants: [
          Mode(
            begin: r'\barray:',
            end:
                r'(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b',
          ),
          Mode(
            begin: r'\bmap:',
            end:
                r'(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b',
          ),
          Mode(
            begin: r'\bmath:',
            end:
                r'(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b',
          ),
          Mode(begin: r'\bop:', end: r'\(', excludeEnd: true),
          Mode(begin: r'\bfn:', end: r'\(', excludeEnd: true),
          Mode(
            begin:
                '[^</\$:\'"-]\\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\\b',
          ),
          Mode(begin: r'\blocal:', end: r'\(', excludeEnd: true),
          Mode(
            begin: r'\bzip:',
            end:
                r'(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\b',
          ),
          Mode(
            begin: r'\b(?:util|db|functx|app|xdmp|xmldb):',
            end: r'\(',
            excludeEnd: true,
          ),
        ],
      ),
      Mode(
        scope: r'string',
        variants: [
          Mode(
            begin: r'"',
            end: r'"',
            contains: [Mode(begin: r'""', relevance: 0)],
          ),
          Mode(
            begin: r"'",
            end: r"'",
            contains: [Mode(begin: r"''", relevance: 0)],
          ),
        ],
      ),
      Mode(
        scope: r'number',
        begin:
            r'(\b0[0-7_]+)|(\b0x[0-9a-fA-F_]+)|(\b[1-9][0-9_]*(\.[0-9_]+)?)|[0_]\b',
        relevance: 0,
      ),
      Mode(
        scope: r'comment',
        begin: r'\(:',
        end: r':\)',
        relevance: 10,
        contains: [Mode(scope: r'doctag', begin: r'@\w+')],
      ),
      Mode(scope: r'meta', begin: r'%[\w\-:]+'),
      Mode(
        scope: r'title',
        begin: r'\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?',
        end: r';',
      ),
      Mode(
        beginKeywords:
            r'element attribute comment document processing-instruction',
        end: r'\{',
        excludeEnd: true,
      ),
      Mode(
        begin: '<([\\w._:-]+)(\\s+\\S*=(\'|").*(\'|"))?>',
        end: r'(\/[\w._:-]+>)',
        subLanguage: r'xml',
        contains: [
          Mode(begin: r'\{', end: r'\}', subLanguage: r'xquery'),
          r'self',
        ],
      ),
    ],
  );
}