--- /srv/reproducible-results/rbuild-debian/r-b-build.E86VgvId/b1/highlight.js_9.18.5+dfsg1-2_i386.changes
+++ /srv/reproducible-results/rbuild-debian/r-b-build.E86VgvId/b2/highlight.js_9.18.5+dfsg1-2_i386.changes
├── Files
│ @@ -1,4 +1,4 @@
│
│ 603db9f1d78e8466de4c2e9c3250478f 322596 javascript optional highlight.js-doc_9.18.5+dfsg1-2_all.deb
│ - d0575b43fe8f56977c43a23f73e8d7ed 395304 javascript optional libjs-highlight.js_9.18.5+dfsg1-2_all.deb
│ - 8479b46f42201ee52b4fbf5dd828d18a 331564 javascript optional node-highlight.js_9.18.5+dfsg1-2_all.deb
│ + da392dc13cf5b7cf11e2b63f0ec8b34b 395200 javascript optional libjs-highlight.js_9.18.5+dfsg1-2_all.deb
│ + e0fc9c8c0de56e1b0130a27b0eac6966 331504 javascript optional node-highlight.js_9.18.5+dfsg1-2_all.deb
├── libjs-highlight.js_9.18.5+dfsg1-2_all.deb
│ ├── file list
│ │ @@ -1,3 +1,3 @@
│ │ -rw-r--r-- 0 0 0 4 2022-04-11 04:51:58.000000 debian-binary
│ │ --rw-r--r-- 0 0 0 3348 2022-04-11 04:51:58.000000 control.tar.xz
│ │ --rw-r--r-- 0 0 0 391764 2022-04-11 04:51:58.000000 data.tar.xz
│ │ +-rw-r--r-- 0 0 0 3344 2022-04-11 04:51:58.000000 control.tar.xz
│ │ +-rw-r--r-- 0 0 0 391664 2022-04-11 04:51:58.000000 data.tar.xz
│ ├── control.tar.xz
│ │ ├── control.tar
│ │ │ ├── ./md5sums
│ │ │ │ ├── ./md5sums
│ │ │ │ │┄ Files differ
│ ├── data.tar.xz
│ │ ├── data.tar
│ │ │ ├── ./usr/share/javascript/highlight.js/highlight.js
│ │ │ │ ├── js-beautify {}
│ │ │ │ │ @@ -1220,14 +1220,1181 @@
│ │ │ │ │ return o;
│ │ │ │ │ };
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ return hljs;
│ │ │ │ │ }));;
│ │ │ │ │
│ │ │ │ │ +hljs.registerLanguage('hy', function(hljs) {
│ │ │ │ │ + var keywords = {
│ │ │ │ │ + 'builtin-name':
│ │ │ │ │ + // keywords
│ │ │ │ │ + '!= % %= & &= * ** **= *= *map ' +
│ │ │ │ │ + '+ += , --build-class-- --import-- -= . / // //= ' +
│ │ │ │ │ + '/= < << <<= <= = > >= >> >>= ' +
│ │ │ │ │ + '@ @= ^ ^= abs accumulate all and any ap-compose ' +
│ │ │ │ │ + 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +
│ │ │ │ │ + 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +
│ │ │ │ │ + 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +
│ │ │ │ │ + 'compress cond cons cons? continue count curry cut cycle dec ' +
│ │ │ │ │ + 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +
│ │ │ │ │ + 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +
│ │ │ │ │ + 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +
│ │ │ │ │ + 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +
│ │ │ │ │ + 'flatten float? fn fnc fnr for for* format fraction genexpr ' +
│ │ │ │ │ + 'gensym get getattr global globals group-by hasattr hash hex id ' +
│ │ │ │ │ + 'identity if if* if-not if-python2 import in inc input instance? ' +
│ │ │ │ │ + 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +
│ │ │ │ │ + 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +
│ │ │ │ │ + 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +
│ │ │ │ │ + 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +
│ │ │ │ │ + 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +
│ │ │ │ │ + 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +
│ │ │ │ │ + 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +
│ │ │ │ │ + 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +
│ │ │ │ │ + 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +
│ │ │ │ │ + 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +
│ │ │ │ │ + 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +
│ │ │ │ │ + 'string? sum switch symbol? take take-nth take-while tee try unless ' +
│ │ │ │ │ + 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +
│ │ │ │ │ + 'xi xor yield yield-from zero? zip zip-longest | |= ~'
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + var SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>\'';
│ │ │ │ │ + var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';
│ │ │ │ │ + var SIMPLE_NUMBER_RE = '[-+]?\\d+(\\.\\d+)?';
│ │ │ │ │ +
│ │ │ │ │ + var SHEBANG = {
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: '^#!',
│ │ │ │ │ + end: '$'
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + var SYMBOL = {
│ │ │ │ │ + begin: SYMBOL_RE,
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + };
│ │ │ │ │ + var NUMBER = {
│ │ │ │ │ + className: 'number',
│ │ │ │ │ + begin: SIMPLE_NUMBER_RE,
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + };
│ │ │ │ │ + var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {
│ │ │ │ │ + illegal: null
│ │ │ │ │ + });
│ │ │ │ │ + var COMMENT = hljs.COMMENT(
│ │ │ │ │ + ';',
│ │ │ │ │ + '$', {
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + }
│ │ │ │ │ + );
│ │ │ │ │ + var LITERAL = {
│ │ │ │ │ + className: 'literal',
│ │ │ │ │ + begin: /\b([Tt]rue|[Ff]alse|nil|None)\b/
│ │ │ │ │ + };
│ │ │ │ │ + var COLLECTION = {
│ │ │ │ │ + begin: '[\\[\\{]',
│ │ │ │ │ + end: '[\\]\\}]'
│ │ │ │ │ + };
│ │ │ │ │ + var HINT = {
│ │ │ │ │ + className: 'comment',
│ │ │ │ │ + begin: '\\^' + SYMBOL_RE
│ │ │ │ │ + };
│ │ │ │ │ + var HINT_COL = hljs.COMMENT('\\^\\{', '\\}');
│ │ │ │ │ + var KEY = {
│ │ │ │ │ + className: 'symbol',
│ │ │ │ │ + begin: '[:]{1,2}' + SYMBOL_RE
│ │ │ │ │ + };
│ │ │ │ │ + var LIST = {
│ │ │ │ │ + begin: '\\(',
│ │ │ │ │ + end: '\\)'
│ │ │ │ │ + };
│ │ │ │ │ + var BODY = {
│ │ │ │ │ + endsWithParent: true,
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + };
│ │ │ │ │ + var NAME = {
│ │ │ │ │ + keywords: keywords,
│ │ │ │ │ + lexemes: SYMBOL_RE,
│ │ │ │ │ + className: 'name',
│ │ │ │ │ + begin: SYMBOL_RE,
│ │ │ │ │ + starts: BODY
│ │ │ │ │ + };
│ │ │ │ │ + var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];
│ │ │ │ │ +
│ │ │ │ │ + LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];
│ │ │ │ │ + BODY.contains = DEFAULT_CONTAINS;
│ │ │ │ │ + COLLECTION.contains = DEFAULT_CONTAINS;
│ │ │ │ │ +
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['hylang'],
│ │ │ │ │ + illegal: /\S/,
│ │ │ │ │ + contains: [SHEBANG, LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]
│ │ │ │ │ + }
│ │ │ │ │ +});
│ │ │ │ │ +
│ │ │ │ │ +hljs.registerLanguage('livescript', function(hljs) {
│ │ │ │ │ + var KEYWORDS = {
│ │ │ │ │ + keyword:
│ │ │ │ │ + // JS keywords
│ │ │ │ │ + 'in if for while finally new do return else break catch instanceof throw try this ' +
│ │ │ │ │ + 'switch continue typeof delete debugger case default function var with ' +
│ │ │ │ │ + // LiveScript keywords
│ │ │ │ │ + 'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +
│ │ │ │ │ + 'case default function var void const let enum export import native list map ' +
│ │ │ │ │ + '__hasProp __extends __slice __bind __indexOf',
│ │ │ │ │ + literal:
│ │ │ │ │ + // JS literals
│ │ │ │ │ + 'true false null undefined ' +
│ │ │ │ │ + // LiveScript literals
│ │ │ │ │ + 'yes no on off it that void',
│ │ │ │ │ + built_in: 'npm require console print module global window document'
│ │ │ │ │ + };
│ │ │ │ │ + var JS_IDENT_RE = '[A-Za-z$_](?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';
│ │ │ │ │ + var TITLE = hljs.inherit(hljs.TITLE_MODE, {
│ │ │ │ │ + begin: JS_IDENT_RE
│ │ │ │ │ + });
│ │ │ │ │ + var SUBST = {
│ │ │ │ │ + className: 'subst',
│ │ │ │ │ + begin: /#\{/,
│ │ │ │ │ + end: /}/,
│ │ │ │ │ + keywords: KEYWORDS
│ │ │ │ │ + };
│ │ │ │ │ + var SUBST_SIMPLE = {
│ │ │ │ │ + className: 'subst',
│ │ │ │ │ + begin: /#[A-Za-z$_]/,
│ │ │ │ │ + end: /(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,
│ │ │ │ │ + keywords: KEYWORDS
│ │ │ │ │ + };
│ │ │ │ │ + var EXPRESSIONS = [
│ │ │ │ │ + hljs.BINARY_NUMBER_MODE, {
│ │ │ │ │ + className: 'number',
│ │ │ │ │ + begin: '(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)',
│ │ │ │ │ + relevance: 0,
│ │ │ │ │ + starts: {
│ │ │ │ │ + end: '(\\s*/)?',
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + } // a number tries to eat the following slash to prevent treating it as a regexp
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'string',
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: /'''/,
│ │ │ │ │ + end: /'''/,
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /'/,
│ │ │ │ │ + end: /'/,
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /"""/,
│ │ │ │ │ + end: /"""/,
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /"/,
│ │ │ │ │ + end: /"/,
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /\\/,
│ │ │ │ │ + end: /(\s|$)/,
│ │ │ │ │ + excludeEnd: true
│ │ │ │ │ + }]
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'regexp',
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: '//',
│ │ │ │ │ + end: '//[gim]*',
│ │ │ │ │ + contains: [SUBST, hljs.HASH_COMMENT_MODE]
│ │ │ │ │ + }, {
│ │ │ │ │ + // regex can't start with space to parse x / 2 / 3 as two divisions
│ │ │ │ │ + // regex can't start with *, and it supports an "illegal" in the main mode
│ │ │ │ │ + begin: /\/(?![ *])(\\.|[^\\\n])*?\/[gim]*(?=\W)/
│ │ │ │ │ + }]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '@' + JS_IDENT_RE
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '``',
│ │ │ │ │ + end: '``',
│ │ │ │ │ + excludeBegin: true,
│ │ │ │ │ + excludeEnd: true,
│ │ │ │ │ + subLanguage: 'javascript'
│ │ │ │ │ + }
│ │ │ │ │ + ];
│ │ │ │ │ + SUBST.contains = EXPRESSIONS;
│ │ │ │ │ +
│ │ │ │ │ + var PARAMS = {
│ │ │ │ │ + className: 'params',
│ │ │ │ │ + begin: '\\(',
│ │ │ │ │ + returnBegin: true,
│ │ │ │ │ + /* We need another contained nameless mode to not have every nested
│ │ │ │ │ + pair of parens to be called "params" */
│ │ │ │ │ + contains: [{
│ │ │ │ │ + begin: /\(/,
│ │ │ │ │ + end: /\)/,
│ │ │ │ │ + keywords: KEYWORDS,
│ │ │ │ │ + contains: ['self'].concat(EXPRESSIONS)
│ │ │ │ │ + }]
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + var SYMBOLS = {
│ │ │ │ │ + begin: '(#=>|=>|\\|>>|-?->|\\!->)'
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['ls'],
│ │ │ │ │ + keywords: KEYWORDS,
│ │ │ │ │ + illegal: /\/\*/,
│ │ │ │ │ + contains: EXPRESSIONS.concat([
│ │ │ │ │ + hljs.COMMENT('\\/\\*', '\\*\\/'),
│ │ │ │ │ + hljs.HASH_COMMENT_MODE,
│ │ │ │ │ + SYMBOLS, // relevance booster
│ │ │ │ │ + {
│ │ │ │ │ + className: 'function',
│ │ │ │ │ + contains: [TITLE, PARAMS],
│ │ │ │ │ + returnBegin: true,
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?',
│ │ │ │ │ + end: '\\->\\*?'
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?',
│ │ │ │ │ + end: '[-~]{1,2}>\\*?'
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?',
│ │ │ │ │ + end: '!?[-~]{1,2}>\\*?'
│ │ │ │ │ + }]
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'class',
│ │ │ │ │ + beginKeywords: 'class',
│ │ │ │ │ + end: '$',
│ │ │ │ │ + illegal: /[:="\[\]]/,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + beginKeywords: 'extends',
│ │ │ │ │ + endsWithParent: true,
│ │ │ │ │ + illegal: /[:="\[\]]/,
│ │ │ │ │ + contains: [TITLE]
│ │ │ │ │ + },
│ │ │ │ │ + TITLE
│ │ │ │ │ + ]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: JS_IDENT_RE + ':',
│ │ │ │ │ + end: ':',
│ │ │ │ │ + returnBegin: true,
│ │ │ │ │ + returnEnd: true,
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + }
│ │ │ │ │ + ])
│ │ │ │ │ + };
│ │ │ │ │ +});
│ │ │ │ │ +
│ │ │ │ │ +hljs.registerLanguage('fsharp', function(hljs) {
│ │ │ │ │ + var TYPEPARAM = {
│ │ │ │ │ + begin: '<',
│ │ │ │ │ + end: '>',
│ │ │ │ │ + contains: [
│ │ │ │ │ + hljs.inherit(hljs.TITLE_MODE, {
│ │ │ │ │ + begin: /'[a-zA-Z0-9_]+/
│ │ │ │ │ + })
│ │ │ │ │ + ]
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['fs'],
│ │ │ │ │ + keywords: 'abstract and as assert base begin class default delegate do done ' +
│ │ │ │ │ + 'downcast downto elif else end exception extern false finally for ' +
│ │ │ │ │ + 'fun function global if in inherit inline interface internal lazy let ' +
│ │ │ │ │ + 'match member module mutable namespace new null of open or ' +
│ │ │ │ │ + 'override private public rec return sig static struct then to ' +
│ │ │ │ │ + 'true try type upcast use val void when while with yield',
│ │ │ │ │ + illegal: /\/\*/,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + // monad builder keywords (matches before non-bang kws)
│ │ │ │ │ + className: 'keyword',
│ │ │ │ │ + begin: /\b(yield|return|let|do)!/
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'string',
│ │ │ │ │ + begin: '@"',
│ │ │ │ │ + end: '"',
│ │ │ │ │ + contains: [{
│ │ │ │ │ + begin: '""'
│ │ │ │ │ + }]
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'string',
│ │ │ │ │ + begin: '"""',
│ │ │ │ │ + end: '"""'
│ │ │ │ │ + },
│ │ │ │ │ + hljs.COMMENT('\\(\\*', '\\*\\)'), {
│ │ │ │ │ + className: 'class',
│ │ │ │ │ + beginKeywords: 'type',
│ │ │ │ │ + end: '\\(|=|$',
│ │ │ │ │ + excludeEnd: true,
│ │ │ │ │ + contains: [
│ │ │ │ │ + hljs.UNDERSCORE_TITLE_MODE,
│ │ │ │ │ + TYPEPARAM
│ │ │ │ │ + ]
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: '\\[<',
│ │ │ │ │ + end: '>\\]',
│ │ │ │ │ + relevance: 10
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'symbol',
│ │ │ │ │ + begin: '\\B(\'[A-Za-z])\\b',
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE]
│ │ │ │ │ + },
│ │ │ │ │ + hljs.C_LINE_COMMENT_MODE,
│ │ │ │ │ + hljs.inherit(hljs.QUOTE_STRING_MODE, {
│ │ │ │ │ + illegal: null
│ │ │ │ │ + }),
│ │ │ │ │ + hljs.C_NUMBER_MODE
│ │ │ │ │ + ]
│ │ │ │ │ + };
│ │ │ │ │ +});
│ │ │ │ │ +
│ │ │ │ │ +hljs.registerLanguage('routeros', // Colors from RouterOS terminal:
│ │ │ │ │ + // green - #0E9A00
│ │ │ │ │ + // teal - #0C9A9A
│ │ │ │ │ + // purple - #99069A
│ │ │ │ │ + // light-brown - #9A9900
│ │ │ │ │ +
│ │ │ │ │ + function(hljs) {
│ │ │ │ │ +
│ │ │ │ │ + var STATEMENTS = 'foreach do while for if from to step else on-error and or not in';
│ │ │ │ │ +
│ │ │ │ │ + // Global commands: Every global command should start with ":" token, otherwise it will be treated as variable.
│ │ │ │ │ + var GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';
│ │ │ │ │ +
│ │ │ │ │ + // Common commands: Following commands available from most sub-menus:
│ │ │ │ │ + var COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';
│ │ │ │ │ +
│ │ │ │ │ + var LITERALS = 'true false yes no nothing nil null';
│ │ │ │ │ +
│ │ │ │ │ + var OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';
│ │ │ │ │ +
│ │ │ │ │ + // print parameters
│ │ │ │ │ + // Several parameters are available for print command:
│ │ │ │ │ + // ToDo: var PARAMETERS_PRINT = 'append as-value brief detail count-only file follow follow-only from interval terse value-list without-paging where info';
│ │ │ │ │ + // ToDo: var OPERATORS = '&& and ! not || or in ~ ^ & << >> + - * /';
│ │ │ │ │ + // ToDo: var TYPES = 'num number bool boolean str string ip ip6-prefix id time array';
│ │ │ │ │ + // ToDo: The following tokens serve as delimiters in the grammar: () [] {} : ; $ /
│ │ │ │ │ +
│ │ │ │ │ + var VAR_PREFIX = 'global local set for foreach';
│ │ │ │ │ +
│ │ │ │ │ + var VAR = {
│ │ │ │ │ + className: 'variable',
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: /\$[\w\d#@][\w\d_]*/
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /\$\{(.*?)}/
│ │ │ │ │ + }]
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + var QUOTE_STRING = {
│ │ │ │ │ + className: 'string',
│ │ │ │ │ + begin: /"/,
│ │ │ │ │ + end: /"/,
│ │ │ │ │ + contains: [
│ │ │ │ │ + hljs.BACKSLASH_ESCAPE,
│ │ │ │ │ + VAR, {
│ │ │ │ │ + className: 'variable',
│ │ │ │ │ + begin: /\$\(/,
│ │ │ │ │ + end: /\)/,
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE]
│ │ │ │ │ + }
│ │ │ │ │ + ]
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + var APOS_STRING = {
│ │ │ │ │ + className: 'string',
│ │ │ │ │ + begin: /'/,
│ │ │ │ │ + end: /'/
│ │ │ │ │ + };
│ │ │ │ │ +
│ │ │ │ │ + var IPADDR = '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b';
│ │ │ │ │ + var IPADDR_wBITMASK = IPADDR + '/(3[0-2]|[1-2][0-9]|\\d)';
│ │ │ │ │ + //////////////////////////////////////////////////////////////////////
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['routeros', 'mikrotik'],
│ │ │ │ │ + case_insensitive: true,
│ │ │ │ │ + lexemes: /:?[\w-]+/,
│ │ │ │ │ + keywords: {
│ │ │ │ │ + literal: LITERALS,
│ │ │ │ │ + keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :'),
│ │ │ │ │ + },
│ │ │ │ │ + contains: [{ // недопустимые конструкции
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: /^@/,
│ │ │ │ │ + end: /$/,
│ │ │ │ │ + }, // dns
│ │ │ │ │ + {
│ │ │ │ │ + begin: /\/\*/,
│ │ │ │ │ + end: /\*\//,
│ │ │ │ │ + }, // -- comment
│ │ │ │ │ + {
│ │ │ │ │ + begin: /%%/,
│ │ │ │ │ + end: /$/,
│ │ │ │ │ + }, // -- comment
│ │ │ │ │ + {
│ │ │ │ │ + begin: /^'/,
│ │ │ │ │ + end: /$/,
│ │ │ │ │ + }, // Monkey one line comment
│ │ │ │ │ + {
│ │ │ │ │ + begin: /^\s*\/[\w-]+=/,
│ │ │ │ │ + end: /$/,
│ │ │ │ │ + }, // jboss-cli
│ │ │ │ │ + {
│ │ │ │ │ + begin: /\/\//,
│ │ │ │ │ + end: /$/,
│ │ │ │ │ + }, // Stan comment
│ │ │ │ │ + {
│ │ │ │ │ + begin: /^\[\,
│ │ │ │ │ + end: /\>\]$/,
│ │ │ │ │ + }, // F# class declaration?
│ │ │ │ │ + {
│ │ │ │ │ + begin: /<\//,
│ │ │ │ │ + end: />/,
│ │ │ │ │ + }, // HTML tags
│ │ │ │ │ + {
│ │ │ │ │ + begin: /^facet /,
│ │ │ │ │ + end: /\}/,
│ │ │ │ │ + }, // roboconf - лютый костыль )))
│ │ │ │ │ + {
│ │ │ │ │ + begin: '^1\\.\\.(\\d+)$',
│ │ │ │ │ + end: /$/,
│ │ │ │ │ + }, // tap
│ │ │ │ │ + ],
│ │ │ │ │ + illegal: /./,
│ │ │ │ │ + },
│ │ │ │ │ + hljs.COMMENT('^#', '$'),
│ │ │ │ │ + QUOTE_STRING,
│ │ │ │ │ + APOS_STRING,
│ │ │ │ │ + VAR, { // attribute=value
│ │ │ │ │ + begin: /[\w-]+\=([^\s\{\}\[\]\(\)]+)/,
│ │ │ │ │ + relevance: 0,
│ │ │ │ │ + returnBegin: true,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'attribute',
│ │ │ │ │ + begin: /[^=]+/
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /=/,
│ │ │ │ │ + endsWithParent: true,
│ │ │ │ │ + relevance: 0,
│ │ │ │ │ + contains: [
│ │ │ │ │ + QUOTE_STRING,
│ │ │ │ │ + APOS_STRING,
│ │ │ │ │ + VAR, {
│ │ │ │ │ + className: 'literal',
│ │ │ │ │ + begin: '\\b(' + LITERALS.split(' ').join('|') + ')\\b',
│ │ │ │ │ + },
│ │ │ │ │ + /*{
│ │ │ │ │ + // IPv4 addresses and subnets
│ │ │ │ │ + className: 'number',
│ │ │ │ │ + variants: [
│ │ │ │ │ + {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24
│ │ │ │ │ + {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3
│ │ │ │ │ + {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1
│ │ │ │ │ + ]
│ │ │ │ │ + }, // */
│ │ │ │ │ + /*{
│ │ │ │ │ + // MAC addresses and DHCP Client IDs
│ │ │ │ │ + className: 'number',
│ │ │ │ │ + begin: /\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\b/,
│ │ │ │ │ + }, //*/
│ │ │ │ │ + {
│ │ │ │ │ + // Не форматировать не классифицированные значения. Необходимо для исключения подсветки значений как built_in.
│ │ │ │ │ + // className: 'number',
│ │ │ │ │ + begin: /("[^"]*"|[^\s\{\}\[\]]+)/,
│ │ │ │ │ + }, //*/
│ │ │ │ │ + ]
│ │ │ │ │ + } //*/
│ │ │ │ │ + ]
│ │ │ │ │ + }, //*/
│ │ │ │ │ + {
│ │ │ │ │ + // HEX values
│ │ │ │ │ + className: 'number',
│ │ │ │ │ + begin: /\*[0-9a-fA-F]+/,
│ │ │ │ │ + }, //*/
│ │ │ │ │ +
│ │ │ │ │ + {
│ │ │ │ │ + begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s\[\(]|\])',
│ │ │ │ │ + returnBegin: true,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'builtin-name', //'function',
│ │ │ │ │ + begin: /\w+/,
│ │ │ │ │ + }, ],
│ │ │ │ │ + },
│ │ │ │ │ +
│ │ │ │ │ + {
│ │ │ │ │ + className: 'built_in',
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: '(\\.\\./|/|\\s)((' + OBJECTS.split(' ').join('|') + ');?\\s)+',
│ │ │ │ │ + relevance: 10,
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /\.\./,
│ │ │ │ │ + }, ],
│ │ │ │ │ + }, //*/
│ │ │ │ │ + ]
│ │ │ │ │ + };
│ │ │ │ │ + });
│ │ │ │ │ +
│ │ │ │ │ +hljs.registerLanguage('gcode', function(hljs) {
│ │ │ │ │ + var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
│ │ │ │ │ + var GCODE_CLOSE_RE = '\\%';
│ │ │ │ │ + var GCODE_KEYWORDS =
│ │ │ │ │ + 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +
│ │ │ │ │ + 'EQ LT GT NE GE LE OR XOR';
│ │ │ │ │ + var GCODE_START = {
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: '([O])([0-9]+)'
│ │ │ │ │ + };
│ │ │ │ │ + var GCODE_CODE = [
│ │ │ │ │ + hljs.C_LINE_COMMENT_MODE,
│ │ │ │ │ + hljs.C_BLOCK_COMMENT_MODE,
│ │ │ │ │ + hljs.COMMENT(/\(/, /\)/),
│ │ │ │ │ + hljs.inherit(hljs.C_NUMBER_MODE, {
│ │ │ │ │ + begin: '([-+]?([0-9]*\\.?[0-9]+\\.?))|' + hljs.C_NUMBER_RE
│ │ │ │ │ + }),
│ │ │ │ │ + hljs.inherit(hljs.APOS_STRING_MODE, {
│ │ │ │ │ + illegal: null
│ │ │ │ │ + }),
│ │ │ │ │ + hljs.inherit(hljs.QUOTE_STRING_MODE, {
│ │ │ │ │ + illegal: null
│ │ │ │ │ + }), {
│ │ │ │ │ + className: 'name',
│ │ │ │ │ + begin: '([G])([0-9]+\\.?[0-9]?)'
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'name',
│ │ │ │ │ + begin: '([M])([0-9]+\\.?[0-9]?)'
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'attr',
│ │ │ │ │ + begin: '(VC|VS|#)',
│ │ │ │ │ + end: '(\\d+)'
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'attr',
│ │ │ │ │ + begin: '(VZOFX|VZOFY|VZOFZ)'
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'built_in',
│ │ │ │ │ + begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)',
│ │ │ │ │ + end: '([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])'
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'symbol',
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: 'N',
│ │ │ │ │ + end: '\\d+',
│ │ │ │ │ + illegal: '\\W'
│ │ │ │ │ + }]
│ │ │ │ │ + }
│ │ │ │ │ + ];
│ │ │ │ │ +
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['nc'],
│ │ │ │ │ + // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.
│ │ │ │ │ + // However, most prefer all uppercase and uppercase is customary.
│ │ │ │ │ + case_insensitive: true,
│ │ │ │ │ + lexemes: GCODE_IDENT_RE,
│ │ │ │ │ + keywords: GCODE_KEYWORDS,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: GCODE_CLOSE_RE
│ │ │ │ │ + },
│ │ │ │ │ + GCODE_START
│ │ │ │ │ + ].concat(GCODE_CODE)
│ │ │ │ │ + };
│ │ │ │ │ +});
│ │ │ │ │ +
│ │ │ │ │ +hljs.registerLanguage('verilog', function(hljs) {
│ │ │ │ │ + var SV_KEYWORDS = {
│ │ │ │ │ + keyword: 'accept_on alias always always_comb always_ff always_latch and assert assign ' +
│ │ │ │ │ + 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +
│ │ │ │ │ + 'byte case casex casez cell chandle checker class clocking cmos config const ' +
│ │ │ │ │ + 'constraint context continue cover covergroup coverpoint cross deassign default ' +
│ │ │ │ │ + 'defparam design disable dist do edge else end endcase endchecker endclass ' +
│ │ │ │ │ + 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +
│ │ │ │ │ + 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +
│ │ │ │ │ + 'endtask enum event eventually expect export extends extern final first_match for ' +
│ │ │ │ │ + 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +
│ │ │ │ │ + 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +
│ │ │ │ │ + 'initial inout input inside instance int integer interconnect interface intersect ' +
│ │ │ │ │ + 'join join_any join_none large let liblist library local localparam logic longint ' +
│ │ │ │ │ + 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +
│ │ │ │ │ + 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +
│ │ │ │ │ + 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +
│ │ │ │ │ + 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +
│ │ │ │ │ + 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +
│ │ │ │ │ + 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +
│ │ │ │ │ + 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +
│ │ │ │ │ + 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +
│ │ │ │ │ + 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +
│ │ │ │ │ + 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +
│ │ │ │ │ + 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +
│ │ │ │ │ + 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',
│ │ │ │ │ + literal: 'null',
│ │ │ │ │ + built_in: '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +
│ │ │ │ │ + '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +
│ │ │ │ │ + '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +
│ │ │ │ │ + '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +
│ │ │ │ │ + '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +
│ │ │ │ │ + '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +
│ │ │ │ │ + '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +
│ │ │ │ │ + '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +
│ │ │ │ │ + '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +
│ │ │ │ │ + '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +
│ │ │ │ │ + '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +
│ │ │ │ │ + '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +
│ │ │ │ │ + '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +
│ │ │ │ │ + '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +
│ │ │ │ │ + '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +
│ │ │ │ │ + '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +
│ │ │ │ │ + '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +
│ │ │ │ │ + '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +
│ │ │ │ │ + '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +
│ │ │ │ │ + '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +
│ │ │ │ │ + '$write $readmemb $readmemh $writememh $value$plusargs ' +
│ │ │ │ │ + '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +
│ │ │ │ │ + '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +
│ │ │ │ │ + '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +
│ │ │ │ │ + '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +
│ │ │ │ │ + '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +
│ │ │ │ │ + '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +
│ │ │ │ │ + '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +
│ │ │ │ │ + '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'
│ │ │ │ │ + };
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['v', 'sv', 'svh'],
│ │ │ │ │ + case_insensitive: false,
│ │ │ │ │ + keywords: SV_KEYWORDS,
│ │ │ │ │ + lexemes: /[\w\$]+/,
│ │ │ │ │ + contains: [
│ │ │ │ │ + hljs.C_BLOCK_COMMENT_MODE,
│ │ │ │ │ + hljs.C_LINE_COMMENT_MODE,
│ │ │ │ │ + hljs.QUOTE_STRING_MODE, {
│ │ │ │ │ + className: 'number',
│ │ │ │ │ + contains: [hljs.BACKSLASH_ESCAPE],
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: '\\b((\\d+\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '\\B((\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '\\b([0-9_])+',
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + }]
│ │ │ │ │ + },
│ │ │ │ │ + /* parameters to instances */
│ │ │ │ │ + {
│ │ │ │ │ + className: 'variable',
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: '#\\((?!parameter).+\\)'
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: '\\.\\w+',
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + }, ]
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: '`',
│ │ │ │ │ + end: '$',
│ │ │ │ │ + keywords: {
│ │ │ │ │ + 'meta-keyword': 'define __FILE__ ' +
│ │ │ │ │ + '__LINE__ begin_keywords celldefine default_nettype define ' +
│ │ │ │ │ + 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +
│ │ │ │ │ + 'include line nounconnected_drive pragma resetall timescale ' +
│ │ │ │ │ + 'unconnected_drive undef undefineall'
│ │ │ │ │ + },
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + }
│ │ │ │ │ + ]
│ │ │ │ │ + }; // return
│ │ │ │ │ +});
│ │ │ │ │ +
│ │ │ │ │ +hljs.registerLanguage('xml', function(hljs) {
│ │ │ │ │ + var XML_IDENT_RE = '[A-Za-z0-9\\._:-]+';
│ │ │ │ │ + var XML_ENTITIES = {
│ │ │ │ │ + className: 'symbol',
│ │ │ │ │ + begin: '&[a-z]+;|[0-9]+;|[a-f0-9]+;'
│ │ │ │ │ + };
│ │ │ │ │ + var XML_META_KEYWORDS = {
│ │ │ │ │ + begin: '\\s',
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'meta-keyword',
│ │ │ │ │ + begin: '#?[a-z_][a-z1-9_-]+',
│ │ │ │ │ + illegal: '\\n',
│ │ │ │ │ + }]
│ │ │ │ │ + };
│ │ │ │ │ + var XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {
│ │ │ │ │ + begin: '\\(',
│ │ │ │ │ + end: '\\)'
│ │ │ │ │ + });
│ │ │ │ │ + var APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {
│ │ │ │ │ + className: 'meta-string'
│ │ │ │ │ + });
│ │ │ │ │ + var QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {
│ │ │ │ │ + className: 'meta-string'
│ │ │ │ │ + });
│ │ │ │ │ + var TAG_INTERNALS = {
│ │ │ │ │ + endsWithParent: true,
│ │ │ │ │ + illegal: /,
│ │ │ │ │ + relevance: 0,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'attr',
│ │ │ │ │ + begin: XML_IDENT_RE,
│ │ │ │ │ + relevance: 0
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /=\s*/,
│ │ │ │ │ + relevance: 0,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'string',
│ │ │ │ │ + endsParent: true,
│ │ │ │ │ + variants: [{
│ │ │ │ │ + begin: /"/,
│ │ │ │ │ + end: /"/,
│ │ │ │ │ + contains: [XML_ENTITIES]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /'/,
│ │ │ │ │ + end: /'/,
│ │ │ │ │ + contains: [XML_ENTITIES]
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /[^\s"'=<>`]+/
│ │ │ │ │ + }]
│ │ │ │ │ + }]
│ │ │ │ │ + }]
│ │ │ │ │ + };
│ │ │ │ │ + return {
│ │ │ │ │ + aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist', 'wsf', 'svg'],
│ │ │ │ │ + case_insensitive: true,
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: '',
│ │ │ │ │ + relevance: 10,
│ │ │ │ │ + contains: [
│ │ │ │ │ + XML_META_KEYWORDS,
│ │ │ │ │ + QUOTE_META_STRING_MODE,
│ │ │ │ │ + APOS_META_STRING_MODE,
│ │ │ │ │ + XML_META_PAR_KEYWORDS, {
│ │ │ │ │ + begin: '\\[',
│ │ │ │ │ + end: '\\]',
│ │ │ │ │ + contains: [{
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: '',
│ │ │ │ │ + contains: [
│ │ │ │ │ + XML_META_KEYWORDS,
│ │ │ │ │ + XML_META_PAR_KEYWORDS,
│ │ │ │ │ + QUOTE_META_STRING_MODE,
│ │ │ │ │ + APOS_META_STRING_MODE
│ │ │ │ │ + ]
│ │ │ │ │ + }]
│ │ │ │ │ + }
│ │ │ │ │ + ]
│ │ │ │ │ + },
│ │ │ │ │ + hljs.COMMENT(
│ │ │ │ │ + '', {
│ │ │ │ │ + relevance: 10
│ │ │ │ │ + }
│ │ │ │ │ + ), {
│ │ │ │ │ + begin: '<\\!\\[CDATA\\[',
│ │ │ │ │ + end: '\\]\\]>',
│ │ │ │ │ + relevance: 10
│ │ │ │ │ + },
│ │ │ │ │ + XML_ENTITIES, {
│ │ │ │ │ + className: 'meta',
│ │ │ │ │ + begin: /<\?xml/,
│ │ │ │ │ + end: /\?>/,
│ │ │ │ │ + relevance: 10
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: /<\?(php)?/,
│ │ │ │ │ + end: /\?>/,
│ │ │ │ │ + subLanguage: 'php',
│ │ │ │ │ + contains: [
│ │ │ │ │ + // We don't want the php closing tag ?> to close the PHP block when
│ │ │ │ │ + // inside any of the following blocks:
│ │ │ │ │ + {
│ │ │ │ │ + begin: '/\\*',
│ │ │ │ │ + end: '\\*/',
│ │ │ │ │ + skip: true
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: 'b"',
│ │ │ │ │ + end: '"',
│ │ │ │ │ + skip: true
│ │ │ │ │ + }, {
│ │ │ │ │ + begin: 'b\'',
│ │ │ │ │ + end: '\'',
│ │ │ │ │ + skip: true
│ │ │ │ │ + },
│ │ │ │ │ + hljs.inherit(hljs.APOS_STRING_MODE, {
│ │ │ │ │ + illegal: null,
│ │ │ │ │ + className: null,
│ │ │ │ │ + contains: null,
│ │ │ │ │ + skip: true
│ │ │ │ │ + }),
│ │ │ │ │ + hljs.inherit(hljs.QUOTE_STRING_MODE, {
│ │ │ │ │ + illegal: null,
│ │ │ │ │ + className: null,
│ │ │ │ │ + contains: null,
│ │ │ │ │ + skip: true
│ │ │ │ │ + })
│ │ │ │ │ + ]
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'tag',
│ │ │ │ │ + /*
│ │ │ │ │ + The lookahead pattern (?=...) ensures that 'begin' only matches
│ │ │ │ │ + '',
│ │ │ │ │ + returnEnd: true,
│ │ │ │ │ + subLanguage: ['css', 'xml']
│ │ │ │ │ + }
│ │ │ │ │ + }, {
│ │ │ │ │ + className: 'tag',
│ │ │ │ │ + // See the comment in the ',
│ │ │ │ │ - returnEnd: true,
│ │ │ │ │ - subLanguage: ['css', 'xml']
│ │ │ │ │ - }
│ │ │ │ │ - }, {
│ │ │ │ │ - className: 'tag',
│ │ │ │ │ - // See the comment in the ",
│ │ │ │ │ - returnEnd: true,
│ │ │ │ │ - subLanguage: ["css", "xml"]
│ │ │ │ │ - }
│ │ │ │ │ - }, {
│ │ │ │ │ - className: "tag",
│ │ │ │ │ - begin: "