From bc3a1c32289a32fa2c68b45fef8bcad122f05b59 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 15 Oct 2020 22:38:11 -0400 Subject: [PATCH 01/23] wip --- src/languages/actionscript.js | 4 ++-- src/languages/ceylon.js | 2 +- src/languages/clojure.js | 2 +- src/languages/coffeescript.js | 2 +- src/languages/crystal.js | 16 ++++++++-------- src/languages/csharp.js | 12 ++++++------ src/languages/zephir.js | 2 +- src/lib/mode_compiler.js | 2 +- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/languages/actionscript.js b/src/languages/actionscript.js index bd290ef823..991a1b72a1 100644 --- a/src/languages/actionscript.js +++ b/src/languages/actionscript.js @@ -34,12 +34,12 @@ export default function(hljs) { hljs.C_NUMBER_MODE, { className: 'class', - beginKeywords: 'package', end: '{', + beginKeywords: 'package', end: /\{/, contains: [hljs.TITLE_MODE] }, { className: 'class', - beginKeywords: 'class interface', end: '{', excludeEnd: true, + beginKeywords: 'class interface', end: /\{/, excludeEnd: true, contains: [ { beginKeywords: 'extends implements' diff --git a/src/languages/ceylon.js b/src/languages/ceylon.js index f9b1b7e29c..63dfee608c 100644 --- a/src/languages/ceylon.js +++ b/src/languages/ceylon.js @@ -67,7 +67,7 @@ export default function(hljs) { { // compiler annotation className: 'meta', - begin: '@[a-z]\\w*(?:\\:\"[^\"]*\")?' + begin: '@[a-z]\\w*(?::"[^"]*")?' } ].concat(EXPRESSIONS) }; diff --git a/src/languages/clojure.js b/src/languages/clojure.js index bf0d877810..a243e5805f 100644 --- a/src/languages/clojure.js +++ b/src/languages/clojure.js @@ -96,7 +96,7 @@ export default function(hljs) { var GLOBAL = { beginKeywords: globals, lexemes: SYMBOL_RE, - end: '(\\[|\\#|\\d|"|:|\\{|\\)|\\(|$)', + end: '(\\[|#|\\d|"|:|\\{|\\)|\\(|$)', contains: [ { className: 'title', diff --git a/src/languages/coffeescript.js b/src/languages/coffeescript.js index 2d6a8f5094..e5c360d161 100644 --- a/src/languages/coffeescript.js +++ b/src/languages/coffeescript.js @@ -51,7 +51,7 @@ export default function(hljs) { var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; var SUBST = { className: 'subst', - begin: /#\{/, end: /}/, + begin: /#\{/, end: /\}/, keywords: KEYWORDS }; var EXPRESSIONS = [ diff --git a/src/languages/crystal.js b/src/languages/crystal.js index 7230d6cb7b..3224886803 100644 --- a/src/languages/crystal.js +++ b/src/languages/crystal.js @@ -9,8 +9,8 @@ export default function(hljs) { var INT_SUFFIX = '(_*[ui](8|16|32|64|128))?'; var FLOAT_SUFFIX = '(_*f(32|64))?'; var CRYSTAL_IDENT_RE = '[a-zA-Z_]\\w*[!?=]?'; - var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?'; - var CRYSTAL_PATH_RE = '[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?'; + var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?'; + var CRYSTAL_PATH_RE = '[A-Za-z_]\\w*(::\\w+)*(\\?|!)?'; var CRYSTAL_KEYWORDS = { $pattern: CRYSTAL_IDENT_RE, keyword: @@ -22,7 +22,7 @@ export default function(hljs) { }; var SUBST = { className: 'subst', - begin: '#{', end: '}', + begin: /#\{/, end: /\}/, keywords: CRYSTAL_KEYWORDS }; var EXPANSION = { @@ -49,7 +49,7 @@ export default function(hljs) { {begin: /`/, end: /`/}, {begin: '%[Qwi]?\\(', end: '\\)', contains: recursiveParen('\\(', '\\)')}, {begin: '%[Qwi]?\\[', end: '\\]', contains: recursiveParen('\\[', '\\]')}, - {begin: '%[Qwi]?{', end: '}', contains: recursiveParen('{', '}')}, + {begin: '%[Qwi]?\\{', end: /\}/, contains: recursiveParen(/\{/, /\}/)}, {begin: '%[Qwi]?<', end: '>', contains: recursiveParen('<', '>')}, {begin: '%[Qwi]?\\|', end: '\\|'}, {begin: /<<-\w+$/, end: /^\s*\w+$/}, @@ -61,7 +61,7 @@ export default function(hljs) { variants: [ {begin: '%q\\(', end: '\\)', contains: recursiveParen('\\(', '\\)')}, {begin: '%q\\[', end: '\\]', contains: recursiveParen('\\[', '\\]')}, - {begin: '%q{', end: '}', contains: recursiveParen('{', '}')}, + {begin: '%q\\{', end: /\}/, contains: recursiveParen(/\{/, /\}/)}, {begin: '%q<', end: '>', contains: recursiveParen('<', '>')}, {begin: '%q\\|', end: '\\|'}, {begin: /<<-'\w+'$/, end: /^\s*\w+$/}, @@ -69,7 +69,7 @@ export default function(hljs) { relevance: 0, }; var REGEXP = { - begin: '(?!%})(' + hljs.RE_STARTERS_RE + '|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*', + begin: '(?!%\\})(' + hljs.RE_STARTERS_RE + '|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*', keywords: 'case if select unless until when while', contains: [ { @@ -89,7 +89,7 @@ export default function(hljs) { variants: [ {begin: '%r\\(', end: '\\)', contains: recursiveParen('\\(', '\\)')}, {begin: '%r\\[', end: '\\]', contains: recursiveParen('\\[', '\\]')}, - {begin: '%r{', end: '}', contains: recursiveParen('{', '}')}, + {begin: '%r\\{', end: /\}/, contains: recursiveParen(/\{/, /\}/)}, {begin: '%r<', end: '>', contains: recursiveParen('<', '>')}, {begin: '%r\\|', end: '\\|'}, ], @@ -162,7 +162,7 @@ export default function(hljs) { }, { className: 'symbol', - begin: hljs.UNDERSCORE_IDENT_RE + '(\\!|\\?)?:', + begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:', relevance: 0 }, { diff --git a/src/languages/csharp.js b/src/languages/csharp.js index 28963f707c..5d90471271 100644 --- a/src/languages/csharp.js +++ b/src/languages/csharp.js @@ -170,7 +170,7 @@ export default function(hljs) { var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\n/}); var SUBST = { className: 'subst', - begin: '{', end: '}', + begin: /\{/, end: /\}/, keywords: KEYWORDS }; var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\n/}); @@ -178,16 +178,16 @@ export default function(hljs) { className: 'string', begin: /\$"/, end: '"', illegal: /\n/, - contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF] + contains: [{begin: /\{\{/}, {begin: /\}\}/}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF] }; var INTERPOLATED_VERBATIM_STRING = { className: 'string', begin: /\$@"/, end: '"', - contains: [{begin: '{{'}, {begin: '}}'}, {begin: '""'}, SUBST] + contains: [{begin: /\{\{/}, {begin: /\}\}/}, {begin: '""'}, SUBST] }; var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, { illegal: /\n/, - contains: [{begin: '{{'}, {begin: '}}'}, {begin: '""'}, SUBST_NO_LF] + contains: [{begin: /\{\{/}, {begin: /\}\}/}, {begin: '""'}, SUBST_NO_LF] }); SUBST.contains = [ INTERPOLATED_VERBATIM_STRING, @@ -319,14 +319,14 @@ export default function(hljs) { }, { className: 'function', - begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(\\<.+\\>)?\\s*\\(', returnBegin: true, + begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(<.+>)?\\s*\\(', returnBegin: true, end: /\s*[{;=]/, excludeEnd: true, keywords: KEYWORDS, contains: [ // prevents these from being highlighted `title` { beginKeywords: FUNCTION_MODIFIERS.join(" ")}, { - begin: hljs.IDENT_RE + '\\s*(\\<.+\\>)?\\s*\\(', returnBegin: true, + begin: hljs.IDENT_RE + '\\s*(<.+>)?\\s*\\(', returnBegin: true, contains: [ hljs.TITLE_MODE, GENERIC_MODIFIER diff --git a/src/languages/zephir.js b/src/languages/zephir.js index 681a8538fb..03f790fcc4 100644 --- a/src/languages/zephir.js +++ b/src/languages/zephir.js @@ -91,7 +91,7 @@ export default function(hljs) { }, { className: 'class', - beginKeywords: 'class interface', end: '{', excludeEnd: true, + beginKeywords: 'class interface', end: /\{/, excludeEnd: true, illegal: /[:\(\$"]/, contains: [ {beginKeywords: 'extends implements'}, diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 5d1df3e6e4..220f0af53b 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -24,7 +24,7 @@ export function compileLanguage(language) { function langRe(value, global) { return new RegExp( regex.source(value), - 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + 'um' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') ); } From f0705a2f3d394ea4fb8d984d35cc633e5e544dfe Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 15 Oct 2020 22:44:41 -0400 Subject: [PATCH 02/23] wip --- src/languages/dart.js | 6 +++--- src/languages/diff.js | 12 ++++++------ src/languages/dsconfig.js | 11 ++++++----- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/languages/dart.js b/src/languages/dart.js index 08808da60f..0ceceda46b 100644 --- a/src/languages/dart.js +++ b/src/languages/dart.js @@ -18,8 +18,8 @@ export default function(hljs) { const BRACED_SUBST = { className: 'subst', variants: [{ - begin: '\\${', - end: '}' + begin: /\$\{/, + end: /\}/ }], keywords: 'true false null this is new super', }; @@ -155,7 +155,7 @@ export default function(hljs) { { className: 'class', beginKeywords: 'class interface', - end: '{', + end: /\{/, excludeEnd: true, contains: [{ beginKeywords: 'extends implements' diff --git a/src/languages/diff.js b/src/languages/diff.js index 4bcbe27540..41de6aacb0 100644 --- a/src/languages/diff.js +++ b/src/languages/diff.js @@ -16,9 +16,9 @@ export default function(hljs) { className: 'meta', relevance: 10, variants: [ - {begin: /^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/}, + {begin: /^@@ +-\d+,\d+ +\+\d+,\d+ +@@$/}, {begin: /^\*\*\* +\d+,\d+ +\*\*\*\*$/}, - {begin: /^\-\-\- +\d+,\d+ +\-\-\-\-$/} + {begin: /^--- +\d+,\d+ +----$/} ] }, { @@ -26,7 +26,7 @@ export default function(hljs) { variants: [ {begin: /Index: /, end: /$/}, {begin: /={3,}/, end: /$/}, - {begin: /^\-{3}/, end: /$/}, + {begin: /^-{3}/, end: /$/}, {begin: /^\*{3} /, end: /$/}, {begin: /^\+{3}/, end: /$/}, {begin: /^\*{15}$/ } @@ -34,15 +34,15 @@ export default function(hljs) { }, { className: 'addition', - begin: '^\\+', end: '$' + begin: /^\+/, end: /$/ }, { className: 'deletion', - begin: '^\\-', end: '$' + begin: /^-/, end: /$/ }, { className: 'addition', - begin: '^\\!', end: '$' + begin: /^!/, end: /$/ } ] }; diff --git a/src/languages/dsconfig.js b/src/languages/dsconfig.js index 1974d690fb..b9fc0ce6c4 100644 --- a/src/languages/dsconfig.js +++ b/src/languages/dsconfig.js @@ -15,12 +15,12 @@ export default function(hljs) { }; var UNQUOTED_PROPERTY = { className: 'string', - begin: '[\\w-?]+:\\w+', end: '\\W', + begin: /[\w\-?]+:\w+/, end: /\W/, relevance: 0 }; var VALUELESS_PROPERTY = { className: 'string', - begin: '\\w+-?\\w+', end: '\\W', + begin: /\w+-?\w+/, end: /\W/, relevance: 0 }; @@ -29,18 +29,19 @@ export default function(hljs) { contains: [ { className: 'keyword', - begin: '^dsconfig', end: '\\s', excludeEnd: true, + begin: '^dsconfig', end: /\s/, excludeEnd: true, relevance: 10 }, { className: 'built_in', - begin: '(list|create|get|set|delete)-(\\w+)', end: '\\s', excludeEnd: true, + begin: /(list|create|get|set|delete)-(\w+)/, + end: /\s/, excludeEnd: true, illegal: '!@#$%^&*()', relevance: 10 }, { className: 'built_in', - begin: '--(\\w+)', end: '\\s', excludeEnd: true + begin: /--(\w+)/, end: /\s/, excludeEnd: true }, QUOTED_PROPERTY, APOS_PROPERTY, From 64f2ce3bf25b44e4c58aabcbf714aab1b24d37bc Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 15 Oct 2020 22:47:46 -0400 Subject: [PATCH 03/23] wip --- src/languages/ebnf.js | 2 +- src/languages/elixir.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/languages/ebnf.js b/src/languages/ebnf.js index bb76cb349c..2d3f9f93fe 100644 --- a/src/languages/ebnf.js +++ b/src/languages/ebnf.js @@ -9,7 +9,7 @@ export default function(hljs) { var nonTerminalMode = { className: "attribute", - begin: /^[ ]*[a-zA-Z][a-zA-Z-_]*([\s-_]+[a-zA-Z][a-zA-Z]*)*/ + begin: /^[ ]*[a-zA-Z][a-zA-Z-_]*([\s\-_]+[a-zA-Z][a-zA-Z]*)*/ }; var specialSequenceMode = { diff --git a/src/languages/elixir.js b/src/languages/elixir.js index 70bbe16758..cac524f04a 100644 --- a/src/languages/elixir.js +++ b/src/languages/elixir.js @@ -7,8 +7,8 @@ Website: https://elixir-lang.org */ export default function(hljs) { - var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?'; - var ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; + var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?'; + var ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; var ELIXIR_KEYWORDS = { $pattern: ELIXIR_IDENT_RE, keyword: 'and false then defined module in return redo retry end for true self when ' + @@ -17,7 +17,7 @@ export default function(hljs) { }; var SUBST = { className: 'subst', - begin: '#\\{', end: '}', + begin: /#\{/, end: /\}/, keywords: ELIXIR_KEYWORDS }; var NUMBER = { @@ -25,7 +25,7 @@ export default function(hljs) { begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)', relevance: 0 }; - var SIGIL_DELIMITERS = '[/|([{<"\']' + var SIGIL_DELIMITERS = '[/|([{<"\']'; var LOWERCASE_SIGIL = { className: 'string', begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')', @@ -60,7 +60,7 @@ export default function(hljs) { { begin: /\(/, end: /\)/ }, { begin: /\[/, end: /\]/ }, { begin: /\{/, end: /\}/ }, - { begin: /\/ } + { begin: // } ] }; @@ -136,7 +136,7 @@ export default function(hljs) { NUMBER, { className: 'variable', - begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))' + begin: '(\\$\\W)|((\\$|@@?)(\\w+))' }, { begin: '->' From b8bf0ddc713e54d34158027618babe493aaea1dd Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 15 Oct 2020 22:53:01 -0400 Subject: [PATCH 04/23] wip --- src/languages/erlang.js | 4 ++-- src/languages/groovy.js | 2 +- src/languages/handlebars.js | 4 ++-- src/languages/xml.js | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/languages/erlang.js b/src/languages/erlang.js index e37b94ea53..d507dbef84 100644 --- a/src/languages/erlang.js +++ b/src/languages/erlang.js @@ -43,7 +43,7 @@ export default function(hljs) { ] }; var TUPLE = { - begin: '{', end: '}', + begin: /\{/, end: /\}/, relevance: 0 // "contains" defined later }; @@ -65,7 +65,7 @@ export default function(hljs) { relevance: 0 }, { - begin: '{', end: '}', + begin: /\{/, end: /\}/, relevance: 0 // "contains" defined later } diff --git a/src/languages/groovy.js b/src/languages/groovy.js index 014019e72e..898f258e28 100644 --- a/src/languages/groovy.js +++ b/src/languages/groovy.js @@ -85,7 +85,7 @@ export default function(hljs) { NUMBER, { className: 'class', - beginKeywords: 'class interface trait enum', end: '{', + beginKeywords: 'class interface trait enum', end: /\{/, illegal: ':', contains: [ {beginKeywords: 'extends implements'}, diff --git a/src/languages/handlebars.js b/src/languages/handlebars.js index 08bb06e03e..a1ed102941 100644 --- a/src/languages/handlebars.js +++ b/src/languages/handlebars.js @@ -161,7 +161,7 @@ export default function(hljs) { keywords: BUILT_INS, className: 'name', starts: hljs.inherit(HELPER_PARAMETERS, { - end: /}}/, + end: /\}\}/, }) }); @@ -174,7 +174,7 @@ export default function(hljs) { className: 'name', keywords: BUILT_INS, starts: hljs.inherit(HELPER_PARAMETERS, { - end: /}}/, + end: /\}\}/, }) }); diff --git a/src/languages/xml.js b/src/languages/xml.js index 877092f72e..a7d4e2b19f 100644 --- a/src/languages/xml.js +++ b/src/languages/xml.js @@ -89,7 +89,7 @@ export default function(hljs) { } ), { - begin: '<\\!\\[CDATA\\[', end: '\\]\\]>', + begin: '', relevance: 10 }, XML_ENTITIES, From bd0016372da9628bbe1b7a8fd0c64f72d6aa412f Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 15 Oct 2020 23:05:44 -0400 Subject: [PATCH 05/23] wip --- src/languages/ini.js | 4 ++-- src/languages/json.js | 2 +- src/languages/kotlin.js | 2 +- src/languages/objectivec.js | 2 +- src/languages/pgsql.js | 2 +- src/languages/rust.js | 4 ++-- src/languages/swift.js | 2 +- src/languages/twig.js | 6 +++--- src/languages/xquery.js | 43 ++++++++++++++++--------------------- 9 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/languages/ini.js b/src/languages/ini.js index 627c4f0702..32b9547053 100644 --- a/src/languages/ini.js +++ b/src/languages/ini.js @@ -13,7 +13,7 @@ export default function(hljs) { className: 'number', relevance: 0, variants: [ - { begin: /([\+\-]+)?[\d]+_[\d_]+/ }, + { begin: /([+-]+)?[\d]+_[\d_]+/ }, { begin: hljs.NUMBER_RE } ] }; @@ -26,7 +26,7 @@ export default function(hljs) { className: 'variable', variants: [ { begin: /\$[\w\d"][\w\d_]*/ }, - { begin: /\$\{(.*?)}/ } + { begin: /\$\{(.*?)\}/ } ] }; var LITERALS = { diff --git a/src/languages/json.js b/src/languages/json.js index 34bded9298..f8779a4221 100644 --- a/src/languages/json.js +++ b/src/languages/json.js @@ -22,7 +22,7 @@ export default function(hljs) { keywords: LITERALS }; var OBJECT = { - begin: '{', end: '}', + begin: /\{/, end: /\}/, contains: [ { className: 'attr', diff --git a/src/languages/kotlin.js b/src/languages/kotlin.js index fe19c386d8..e2610a9412 100644 --- a/src/languages/kotlin.js +++ b/src/languages/kotlin.js @@ -39,7 +39,7 @@ export default function(hljs) { // for string templates var SUBST = { className: 'subst', - begin: '\\${', end: '}', contains: [hljs.C_NUMBER_MODE] + begin: /\$\{/, end: /\}/, contains: [hljs.C_NUMBER_MODE] }; var VARIABLE = { className: 'variable', begin: '\\$' + hljs.UNDERSCORE_IDENT_RE diff --git a/src/languages/objectivec.js b/src/languages/objectivec.js index 004f8f16e6..9aaa4a5055 100644 --- a/src/languages/objectivec.js +++ b/src/languages/objectivec.js @@ -92,7 +92,7 @@ export default function(hljs) { }, { className: 'class', - begin: '(' + CLASS_KEYWORDS.keyword.split(' ').join('|') + ')\\b', end: '({|$)', excludeEnd: true, + begin: '(' + CLASS_KEYWORDS.keyword.split(' ').join('|') + ')\\b', end: /(\{|$)/, excludeEnd: true, keywords: CLASS_KEYWORDS, contains: [ hljs.UNDERSCORE_TITLE_MODE diff --git a/src/languages/pgsql.js b/src/languages/pgsql.js index 589a8ba145..78a0744924 100644 --- a/src/languages/pgsql.js +++ b/src/languages/pgsql.js @@ -301,7 +301,7 @@ export default function(hljs) { }, // Forbid some cunstructs from other languages to improve autodetect. In fact // "[a-z]:" is legal (as part of array slice), but improbabal. - illegal: /:==|\W\s*\(\*|(^|\s)\$[a-z]|{{|[a-z]:\s*$|\.\.\.|TO:|DO:/, + illegal: /:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/, contains: [ // special handling of some words, which are reserved only in some contexts { diff --git a/src/languages/rust.js b/src/languages/rust.js index 2dbb17a286..7b429d96a6 100644 --- a/src/languages/rust.js +++ b/src/languages/rust.js @@ -80,7 +80,7 @@ export default function(hljs) { }, { className: 'meta', - begin: '#\\!?\\[', end: '\\]', + begin: '#!?\\[', end: '\\]', contains: [ { className: 'meta-string', @@ -98,7 +98,7 @@ export default function(hljs) { }, { className: 'class', - beginKeywords: 'trait enum struct union', end: '{', + beginKeywords: 'trait enum struct union', end: /\{/, contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true}) ], diff --git a/src/languages/swift.js b/src/languages/swift.js index e04fd72109..bad2cbb184 100644 --- a/src/languages/swift.js +++ b/src/languages/swift.js @@ -88,7 +88,7 @@ export default function(hljs) { NUMBERS, { className: 'function', - beginKeywords: 'func', end: '{', excludeEnd: true, + beginKeywords: 'func', end: /\{/, excludeEnd: true, contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /[A-Za-z$_][0-9A-Za-z$_]*/ diff --git a/src/languages/twig.js b/src/languages/twig.js index 814f980995..4ea7bd041a 100644 --- a/src/languages/twig.js +++ b/src/languages/twig.js @@ -48,10 +48,10 @@ export default function(hljs) { case_insensitive: true, subLanguage: 'xml', contains: [ - hljs.COMMENT(/\{#/, /#}/), + hljs.COMMENT(/\{#/, /#\}/), { className: 'template-tag', - begin: /\{%/, end: /%}/, + begin: /\{%/, end: /%\}/, contains: [ { className: 'name', @@ -67,7 +67,7 @@ export default function(hljs) { }, { className: 'template-variable', - begin: /\{\{/, end: /}}/, + begin: /\{\{/, end: /\}\}/, contains: ['self', FILTER, FUNCTIONS] } ] diff --git a/src/languages/xquery.js b/src/languages/xquery.js index a03949da91..e7d1323a21 100644 --- a/src/languages/xquery.js +++ b/src/languages/xquery.js @@ -31,35 +31,35 @@ export default function(hljs) { var BUILT_IN = { className: 'built_in', variants: [{ - begin: /\barray\:/, - end: /(?:append|filter|flatten|fold\-(?:left|right)|for-each(?:\-pair)?|get|head|insert\-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ + begin: /\barray:/, + end: /(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ }, { - begin: /\bmap\:/, - end: /(?:contains|entry|find|for\-each|get|keys|merge|put|remove|size)\b/ + begin: /\bmap:/, + end: /(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/ }, { - begin: /\bmath\:/, + begin: /\bmath:/, end: /(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ }, { - begin: /\bop\:/, + begin: /\bop:/, end: /\(/, excludeEnd: true }, { - begin: /\bfn\:/, + begin: /\bfn:/, end: /\(/, excludeEnd: true }, // do not highlight inbuilt strings as variable or xml element names { - 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/, + 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/, }, { - begin: /\blocal\:/, + begin: /\blocal:/, end: /\(/, excludeEnd: true }, { - begin: /\bzip\:/, - end: /(?:zip\-file|(?:xml|html|text|binary)\-entry| (?:update\-)?entries)\b/ + begin: /\bzip:/, + end: /(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\b/ }, { - begin: /\b(?:util|db|functx|app|xdmp|xmldb)\:/, + begin: /\b(?:util|db|functx|app|xdmp|xmldb):/, end: /\(/, excludeEnd: true } @@ -74,7 +74,7 @@ export default function(hljs) { var VAR = { className: 'variable', - begin: /[\$][\w-:]+/ + begin: /[$][\w\-:]+/ }; var NUMBER = { @@ -106,7 +106,7 @@ export default function(hljs) { var ANNOTATION = { className: 'meta', - begin: /%[\w-:]+/ + begin: /%[\w\-:]+/ }; var COMMENT = { @@ -125,7 +125,7 @@ export default function(hljs) { // see https://www.regexpal.com/?fam=99749 var COMPUTED = { beginKeywords: 'element attribute comment document processing-instruction', - end: '{', + end: /\{/, excludeEnd: true }; @@ -135,13 +135,12 @@ export default function(hljs) { end: /(\/[\w\._:\-]+>)/, subLanguage: 'xml', contains: [{ - begin: '{', - end: '}', + begin: /\{/, + end: /\}/, subLanguage: 'xquery' }, 'self'] }; - var CONTAINS = [ VAR, BUILT_IN, @@ -154,16 +153,12 @@ export default function(hljs) { DIRECT ]; - - var METHOD = { - begin: '{', - end: '}', + begin: /\{/, + end: /\}/, contains: CONTAINS }; - - return { name: 'XQuery', aliases: ['xpath', 'xq'], From a0cdbf7234ec1946b9156ad683ca78c8b7686f8d Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Thu, 15 Oct 2020 23:45:32 -0400 Subject: [PATCH 06/23] wip --- docs/language-guide.rst | 2 +- docs/mode-reference.rst | 2 +- src/languages/ada.js | 2 +- src/languages/angelscript.js | 4 ++-- src/languages/asciidoc.js | 2 +- src/languages/awk.js | 2 +- src/languages/axapta.js | 8 ++++---- src/languages/brainfuck.js | 4 ++-- src/languages/cmake.js | 2 +- src/languages/css.js | 2 +- src/languages/elm.js | 2 +- src/languages/haskell.js | 2 +- src/languages/less.js | 10 +++++----- src/languages/nginx.js | 6 +++--- src/languages/oxygene.js | 4 ++-- src/languages/parser3.js | 4 ++-- src/languages/php.js | 6 +++--- src/languages/powershell.js | 2 +- src/languages/qml.js | 2 +- src/languages/reasonml.js | 22 +++++++++++----------- src/languages/ruby.js | 32 ++++++++++++++++---------------- src/languages/scala.js | 2 +- src/languages/scheme.js | 2 +- src/languages/vala.js | 2 +- src/languages/yaml.js | 6 +++--- src/lib/mode_compiler.js | 2 +- 26 files changed, 68 insertions(+), 68 deletions(-) diff --git a/docs/language-guide.rst b/docs/language-guide.rst index 38b0db659d..ae8e3c51d3 100644 --- a/docs/language-guide.rst +++ b/docs/language-guide.rst @@ -130,7 +130,7 @@ This is commonly used to define nested modes: { className: 'object', - begin: '{', end: '}', + begin: /\{/, end: /\}/, contains: [hljs.QUOTE_STRING_MODE, 'self'] } diff --git a/docs/mode-reference.rst b/docs/mode-reference.rst index b79500ffd8..c32e705d43 100644 --- a/docs/mode-reference.rst +++ b/docs/mode-reference.rst @@ -158,7 +158,7 @@ This is when ``endsWithParent`` comes into play: :: { - className: 'rules', begin: '{', end: '}', + className: 'rules', begin: /\{/, end: /\}/, contains: [ {className: 'rule', /* ... */ end: ';', endsWithParent: true} ] diff --git a/src/languages/ada.js b/src/languages/ada.js index eba10a79d5..093fc8a662 100644 --- a/src/languages/ada.js +++ b/src/languages/ada.js @@ -37,7 +37,7 @@ export default function(hljs) { var ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*'; // bad chars, only allowed in literals - var BAD_CHARS = `[]{}%#'"`; + var BAD_CHARS = `[]\\{\\}%#'"`; // Ada doesn't have block comments, only line comments var COMMENTS = hljs.COMMENT('--', '$'); diff --git a/src/languages/angelscript.js b/src/languages/angelscript.js index 981a9976d2..260f7c9514 100644 --- a/src/languages/angelscript.js +++ b/src/languages/angelscript.js @@ -71,7 +71,7 @@ export default function(hljs) { }, { // interface or namespace declaration - beginKeywords: 'interface namespace', end: '{', + beginKeywords: 'interface namespace', end: /\{/, illegal: '[;.\\-]', contains: [ { // interface or namespace name @@ -82,7 +82,7 @@ export default function(hljs) { }, { // class declaration - beginKeywords: 'class', end: '{', + beginKeywords: 'class', end: /\{/, illegal: '[;.\\-]', contains: [ { // class name diff --git a/src/languages/asciidoc.js b/src/languages/asciidoc.js index 419a2d551a..1962bb0930 100644 --- a/src/languages/asciidoc.js +++ b/src/languages/asciidoc.js @@ -96,7 +96,7 @@ export default function(hljs) { // lists (can only capture indicators) { className: 'bullet', - begin: '^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+' + begin: '^(\\*+|-+|\\.+|[^\\n]+?::)\\s+' }, // admonition { diff --git a/src/languages/awk.js b/src/languages/awk.js index 0d61c54cc5..f2b424154e 100644 --- a/src/languages/awk.js +++ b/src/languages/awk.js @@ -11,7 +11,7 @@ export default function(hljs) { className: 'variable', variants: [ {begin: /\$[\w\d#@][\w\d_]*/}, - {begin: /\$\{(.*?)}/} + {begin: /\$\{(.*?)\}/} ] }; var KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10'; diff --git a/src/languages/axapta.js b/src/languages/axapta.js index 61511b39f0..297a23a118 100644 --- a/src/languages/axapta.js +++ b/src/languages/axapta.js @@ -75,7 +75,7 @@ export default function(hljs) { 'firstonly100', 'firstonly1000', 'flush', - 'for', + 'for', 'forceliterals', 'forcenestedloop', 'forceplaceholders', @@ -83,7 +83,7 @@ export default function(hljs) { 'forupdate', 'from', 'generateonly', - 'group', + 'group', 'hint', 'if', 'implements', @@ -119,7 +119,7 @@ export default function(hljs) { 'select', 'server', 'setting', - 'static', + 'static', 'sum', 'super', 'switch', @@ -160,7 +160,7 @@ export default function(hljs) { }, { className: 'class', - beginKeywords: 'class interface', end: '{', excludeEnd: true, + beginKeywords: 'class interface', end: /\{/, excludeEnd: true, illegal: ':', contains: [ {beginKeywords: 'extends implements'}, diff --git a/src/languages/brainfuck.js b/src/languages/brainfuck.js index 957d19618b..c10cdb1afc 100644 --- a/src/languages/brainfuck.js +++ b/src/languages/brainfuck.js @@ -8,7 +8,7 @@ Website: https://esolangs.org/wiki/Brainfuck export default function(hljs) { var LITERAL = { className: 'literal', - begin: '[\\+\\-]', + begin: /[+-]/, relevance: 0 }; return { @@ -35,7 +35,7 @@ export default function(hljs) { }, { // this mode works as the only relevance counter - begin: /(?:\+\+|\-\-)/, + begin: /(?:\+\+|--)/, contains: [LITERAL] }, LITERAL diff --git a/src/languages/cmake.js b/src/languages/cmake.js index 040769c610..f7ff736942 100644 --- a/src/languages/cmake.js +++ b/src/languages/cmake.js @@ -51,7 +51,7 @@ export default function(hljs) { contains: [ { className: 'variable', - begin: '\\${', end: '}' + begin: /\$\{/, end: /\}/ }, hljs.HASH_COMMENT_MODE, hljs.QUOTE_STRING_MODE, diff --git a/src/languages/css.js b/src/languages/css.js index beabf84543..054f4a2cc8 100644 --- a/src/languages/css.js +++ b/src/languages/css.js @@ -121,7 +121,7 @@ export default function(hljs) { relevance: 0 }, { - begin: '{', end: '}', + begin: /\{/, end: /\}/, illegal: /\S/, contains: [ hljs.C_BLOCK_COMMENT_MODE, diff --git a/src/languages/elm.js b/src/languages/elm.js index 85310a6672..e7509c14f9 100644 --- a/src/languages/elm.js +++ b/src/languages/elm.js @@ -35,7 +35,7 @@ export default function(hljs) { }; var RECORD = { - begin: '{', end: '}', + begin: /\{/, end: /\}/, contains: LIST.contains }; diff --git a/src/languages/haskell.js b/src/languages/haskell.js index a59f3a996f..ffa0de20c3 100644 --- a/src/languages/haskell.js +++ b/src/languages/haskell.js @@ -49,7 +49,7 @@ export default function(hljs) { }; var RECORD = { - begin: '{', end: '}', + begin: /\{/, end: /\}/, contains: LIST.contains }; diff --git a/src/languages/less.js b/src/languages/less.js index 00c2617aab..3c9d0d0fae 100644 --- a/src/languages/less.js +++ b/src/languages/less.js @@ -8,7 +8,7 @@ Category: common, css export default function(hljs) { var IDENT_RE = '[\\w-]+'; // yes, Less identifiers may begin with a digit - var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})'; + var INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\{' + IDENT_RE + '\\})'; /* Generic Modes */ @@ -42,7 +42,7 @@ export default function(hljs) { IDENT_MODE('number', '#[0-9A-Fa-f]+\\b'), PARENS_MODE, IDENT_MODE('variable', '@@?' + IDENT_RE, 10), - IDENT_MODE('variable', '@{' + IDENT_RE + '}'), + IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding): className: 'attribute', begin: IDENT_RE + '\\s*:', end: ':', returnBegin: true, excludeEnd: true @@ -54,7 +54,7 @@ export default function(hljs) { ); var VALUE_WITH_RULESETS = VALUE.concat({ - begin: '{', end: '}', contains: RULES + begin: /\{/, end: /\}/, contains: RULES }); var MIXIN_GUARD_MODE = { @@ -107,7 +107,7 @@ export default function(hljs) { variants: [{ begin: '[\\.#:&\\[>]', end: '[;{}]' // mixin calls end with ';' }, { - begin: INTERP_IDENT_RE, end: '{' + begin: INTERP_IDENT_RE, end: /\{/ }], returnBegin: true, returnEnd: true, @@ -118,7 +118,7 @@ export default function(hljs) { hljs.C_BLOCK_COMMENT_MODE, MIXIN_GUARD_MODE, IDENT_MODE('keyword', 'all\\b'), - IDENT_MODE('variable', '@{' + IDENT_RE + '}'), // otherwise it’s identified as tag + IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), // otherwise it’s identified as tag IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes "tags" IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE), IDENT_MODE('selector-class', '\\.' + INTERP_IDENT_RE, 0), diff --git a/src/languages/nginx.js b/src/languages/nginx.js index d0eb3b5dec..f8418078e8 100644 --- a/src/languages/nginx.js +++ b/src/languages/nginx.js @@ -74,8 +74,8 @@ export default function(hljs) { contains: [ hljs.HASH_COMMENT_MODE, { - begin: hljs.UNDERSCORE_IDENT_RE + '\\s+{', returnBegin: true, - end: '{', + begin: hljs.UNDERSCORE_IDENT_RE + '\\s+\\{', returnBegin: true, + end: /\{/, contains: [ { className: 'section', @@ -85,7 +85,7 @@ export default function(hljs) { relevance: 0 }, { - begin: hljs.UNDERSCORE_IDENT_RE + '\\s', end: ';|{', returnBegin: true, + begin: hljs.UNDERSCORE_IDENT_RE + '\\s', end: ';|\\{', returnBegin: true, contains: [ { className: 'attribute', diff --git a/src/languages/oxygene.js b/src/languages/oxygene.js index fbdd1288e0..0eda124f94 100644 --- a/src/languages/oxygene.js +++ b/src/languages/oxygene.js @@ -18,8 +18,8 @@ export default function(hljs) { 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained' }; var CURLY_COMMENT = hljs.COMMENT( - '{', - '}', + /\{/, + /\}/, { relevance: 0 } diff --git a/src/languages/parser3.js b/src/languages/parser3.js index 5810bbd361..8dca43c628 100644 --- a/src/languages/parser3.js +++ b/src/languages/parser3.js @@ -8,8 +8,8 @@ Category: template export default function(hljs) { var CURLY_SUBCOMMENT = hljs.COMMENT( - '{', - '}', + /\{/, + /\}/, { contains: ['self'] } diff --git a/src/languages/php.js b/src/languages/php.js index 972083e4b9..7f8b7c8991 100644 --- a/src/languages/php.js +++ b/src/languages/php.js @@ -144,8 +144,8 @@ export default function(hljs) { }, { className: 'class', - beginKeywords: 'class interface', end: '{', excludeEnd: true, - illegal: /[:\(\$"]/, + beginKeywords: 'class interface', end: /\{/, excludeEnd: true, + illegal: /[:($"]/, contains: [ {beginKeywords: 'extends implements'}, hljs.UNDERSCORE_TITLE_MODE @@ -153,7 +153,7 @@ export default function(hljs) { }, { beginKeywords: 'namespace', end: ';', - illegal: /[\.']/, + illegal: /[.']/, contains: [hljs.UNDERSCORE_TITLE_MODE] }, { diff --git a/src/languages/powershell.js b/src/languages/powershell.js index ed21d082a1..5e80f4714d 100644 --- a/src/languages/powershell.js +++ b/src/languages/powershell.js @@ -181,7 +181,7 @@ export default function(hljs) { var HASH_SIGNS = { className: 'selector-tag', - begin: /\@\B/, + begin: /@\B/, relevance: 0 }; diff --git a/src/languages/qml.js b/src/languages/qml.js index 6cb83acb11..803955eb6c 100644 --- a/src/languages/qml.js +++ b/src/languages/qml.js @@ -90,7 +90,7 @@ export default function(hljs) { // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }. // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {. var QML_OBJECT = { - begin: QML_IDENT_RE + '\\s*{', end: '{', + begin: QML_IDENT_RE + '\\s*{', end: /\{/, returnBegin: true, relevance: 0, contains: [ diff --git a/src/languages/reasonml.js b/src/languages/reasonml.js index 37d423701b..cbe629f506 100644 --- a/src/languages/reasonml.js +++ b/src/languages/reasonml.js @@ -25,7 +25,7 @@ export default function(hljs) { var RE_PARAM_TYPEPARAM = '\'?[a-z$_][0-9a-z$_]*'; var RE_PARAM_TYPE = '\s*:\s*[a-z$_][0-9a-z$_]*(\(\s*(' + RE_PARAM_TYPEPARAM + '\s*(,' + RE_PARAM_TYPEPARAM + ')*)?\s*\))?'; var RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + ')?(' + RE_PARAM_TYPE + ')?'; - var RE_OPERATOR = "(" + orReValues(['||', '&&', '++', '**', '+.', '*', '/', '*.', '/.', '...', '|>']) + "|==|===)"; + var RE_OPERATOR = "(" + orReValues(['||', '++', '**', '+.', '*', '/', '*.', '/.', '...']) + "|\\|>|&&|==|===)"; var RE_OPERATOR_SPACED = "\\s+" + RE_OPERATOR + "\\s+"; var KEYWORDS = { @@ -53,7 +53,7 @@ export default function(hljs) { begin: RE_NUMBER }, { - begin: '\\(\\-' + RE_NUMBER + '\\)' + begin: '\\(-' + RE_NUMBER + '\\)' } ] }; @@ -228,8 +228,8 @@ export default function(hljs) { ].concat(MODULE_ACCESS_CONTENTS) }, { - begin: "\\b(" + RE_MODULE_IDENT + "\\.)+{", - end: "}" + begin: "\\b(" + RE_MODULE_IDENT + "\\.)+\\{", + end: /\}/ } ], contains: MODULE_ACCESS_CONTENTS @@ -241,9 +241,9 @@ export default function(hljs) { name: 'ReasonML', aliases: ['re'], keywords: KEYWORDS, - illegal: '(:\\-|:=|\\${|\\+=)', + illegal: '(:-|:=|\\$\\{|\\+=)', contains: [ - hljs.COMMENT('/\\*', '\\*/', { illegal: '^(\\#,\\/\\/)' }), + hljs.COMMENT('/\\*', '\\*/', { illegal: '^(#,\\/\\/)' }), { className: 'character', begin: '\'(\\\\[^\']+|[^\'])\'', @@ -274,7 +274,7 @@ export default function(hljs) { { className: 'operator', begin: RE_OPERATOR_SPACED, - illegal: '\\-\\->', + illegal: '-->', relevance: 0 }, NUMBER_MODE, @@ -283,8 +283,8 @@ export default function(hljs) { FUNCTION_BLOCK_MODE, { className: 'module-def', - begin: "\\bmodule\\s+" + RE_IDENT + "\\s+" + RE_MODULE_IDENT + "\\s+=\\s+{", - end: "}", + begin: "\\bmodule\\s+" + RE_IDENT + "\\s+" + RE_MODULE_IDENT + "\\s+=\\s+\\{", + end: /\}/, returnBegin: true, keywords: KEYWORDS, relevance: 0, @@ -295,8 +295,8 @@ export default function(hljs) { begin: RE_MODULE_IDENT }, { - begin: '{', - end: '}', + begin: /\{/, + end: /\}/, skip: true } ].concat(MODULE_ACCESS_CONTENTS) diff --git a/src/languages/ruby.js b/src/languages/ruby.js index f94e7e0328..818063e955 100644 --- a/src/languages/ruby.js +++ b/src/languages/ruby.js @@ -8,7 +8,7 @@ Category: common */ export default function(hljs) { - var RUBY_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; + var RUBY_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; var RUBY_KEYWORDS = { keyword: 'and then defined module in return redo if BEGIN retry end for self when ' + @@ -33,8 +33,8 @@ export default function(hljs) { } ), hljs.COMMENT( - '^\\=begin', - '^\\=end', + '^=begin', + '^=end', { contains: [YARDOCTAG], relevance: 10 @@ -44,7 +44,7 @@ export default function(hljs) { ]; var SUBST = { className: 'subst', - begin: '#\\{', end: '}', + begin: /#\{/, end: /\}/, keywords: RUBY_KEYWORDS }; var STRING = { @@ -54,14 +54,14 @@ export default function(hljs) { {begin: /'/, end: /'/}, {begin: /"/, end: /"/}, {begin: /`/, end: /`/}, - {begin: '%[qQwWx]?\\(', end: '\\)'}, - {begin: '%[qQwWx]?\\[', end: '\\]'}, - {begin: '%[qQwWx]?{', end: '}'}, - {begin: '%[qQwWx]?<', end: '>'}, - {begin: '%[qQwWx]?/', end: '/'}, - {begin: '%[qQwWx]?%', end: '%'}, - {begin: '%[qQwWx]?-', end: '-'}, - {begin: '%[qQwWx]?\\|', end: '\\|'}, + {begin: /%[qQwWx]?\(/, end: /\)/}, + {begin: /%[qQwWx]?\[/, end: /\]/}, + {begin: /%[qQwWx]?\{/, end: /\}/}, + {begin: /%[qQwWx]?/}, + {begin: /%[qQwWx]?\//, end: /\//}, + {begin: /%[qQwWx]?%/, end: /%/}, + {begin: /%[qQwWx]?-/, end: /-/}, + {begin: /%[qQwWx]?\|/, end: /\|/}, { // \B in the beginning suppresses recognition of ?-sequences where ? // is the last character of a preceding identifier, as in: `func?4` @@ -118,7 +118,7 @@ export default function(hljs) { beginKeywords: 'class module', end: '$|;', illegal: /=/, contains: [ - hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?'}), + hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\w*(::\\w+)*(\\?|!)?'}), { begin: '<\\s*', contains: [{ @@ -141,7 +141,7 @@ export default function(hljs) { }, { className: 'symbol', - begin: hljs.UNDERSCORE_IDENT_RE + '(\\!|\\?)?:', + begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:', relevance: 0 }, { @@ -152,7 +152,7 @@ export default function(hljs) { }, NUMBER, { - begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))' // variables + begin: '(\\$\\W)|((\\$|@@?)(\\w+))' // variables }, { className: 'params', @@ -170,7 +170,7 @@ export default function(hljs) { illegal: /\n/, variants: [ {begin: '/', end: '/[a-z]*'}, - {begin: '%r{', end: '}[a-z]*'}, + {begin: /%r\{/, end: /\}[a-z]*/}, {begin: '%r\\(', end: '\\)[a-z]*'}, {begin: '%r!', end: '![a-z]*'}, {begin: '%r\\[', end: '\\][a-z]*'} diff --git a/src/languages/scala.js b/src/languages/scala.js index b8e1350a0d..c8336fa1c3 100644 --- a/src/languages/scala.js +++ b/src/languages/scala.js @@ -15,7 +15,7 @@ export default function(hljs) { className: 'subst', variants: [ {begin: '\\$[A-Za-z0-9_]+'}, - {begin: '\\${', end: '}'} + {begin: /\$\{/, end: /\}/} ] }; diff --git a/src/languages/scheme.js b/src/languages/scheme.js index 60b257d199..715ac60608 100644 --- a/src/languages/scheme.js +++ b/src/languages/scheme.js @@ -11,7 +11,7 @@ Category: lisp export default function(hljs) { var SCHEME_IDENT_RE = '[^\\(\\)\\[\\]\\{\\}",\'`;#|\\\\\\s]+'; - var SCHEME_SIMPLE_NUMBER_RE = '(\\-|\\+)?\\d+([./]\\d+)?'; + var SCHEME_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+([./]\\d+)?'; var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i'; var KEYWORDS = { $pattern: SCHEME_IDENT_RE, diff --git a/src/languages/vala.js b/src/languages/vala.js index 49b26a8d32..2ca8243e31 100644 --- a/src/languages/vala.js +++ b/src/languages/vala.js @@ -31,7 +31,7 @@ export default function(hljs) { contains: [ { className: 'class', - beginKeywords: 'class interface namespace', end: '{', excludeEnd: true, + beginKeywords: 'class interface namespace', end: /\{/, excludeEnd: true, illegal: '[^,:\\n\\s\\.]', contains: [ hljs.UNDERSCORE_TITLE_MODE diff --git a/src/languages/yaml.js b/src/languages/yaml.js index 02a1d9cee2..d4b28981e3 100644 --- a/src/languages/yaml.js +++ b/src/languages/yaml.js @@ -75,8 +75,8 @@ export default function(hljs) { relevance: 0 }; var OBJECT = { - begin: '{', - end: '}', + begin: /\{/, + end: /\}/, contains: [VALUE_CONTAINER], illegal: '\\n', relevance: 0 @@ -93,7 +93,7 @@ export default function(hljs) { KEY, { className: 'meta', - begin: '^---\s*$', + begin: '^---\\s*$', relevance: 10 }, { // multi line string diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 220f0af53b..5d1df3e6e4 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -24,7 +24,7 @@ export function compileLanguage(language) { function langRe(value, global) { return new RegExp( regex.source(value), - 'um' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') ); } From de9710a9616f68bad5068eb068ba3c8f8a5031f7 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 00:13:13 -0400 Subject: [PATCH 07/23] wip --- src/languages/crmsh.js | 2 +- src/languages/fortran.js | 2 +- src/languages/haskell.js | 6 +++--- src/languages/javascript.js | 8 ++++---- src/languages/less.js | 2 +- src/languages/lisp.js | 4 ++-- src/languages/matlab.js | 6 +++--- src/languages/perl.js | 4 ++-- src/languages/tap.js | 2 +- src/languages/yaml.js | 8 ++++---- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/languages/crmsh.js b/src/languages/crmsh.js index ecbcefe836..b7033d31db 100644 --- a/src/languages/crmsh.js +++ b/src/languages/crmsh.js @@ -89,7 +89,7 @@ export default function(hljs) { }, { className: 'attr', - begin: /([A-Za-z\$_\#][\w_-]+)=/, + begin: /([A-Za-z$_#][\w_-]+)=/, relevance: 0 }, { diff --git a/src/languages/fortran.js b/src/languages/fortran.js index 32f9d3139a..86a27b9f01 100644 --- a/src/languages/fortran.js +++ b/src/languages/fortran.js @@ -23,7 +23,7 @@ export default function(hljs) { const NUMBER = { className: 'number', // regex in both fortran and irpf90 should match - begin: '(?=\\b|\\+|\\-|\\.)(?:\\.|\\d+\\.?)\\d*([de][+-]?\\d+)?(_[a-z_\\d]+)?', + begin: '(?=\\b|\\+|-|\\.)(?:\\.|\\d+\\.?)\\d*([de][+-]?\\d+)?(_[a-z_\\d]+)?', relevance: 0 }; diff --git a/src/languages/haskell.js b/src/languages/haskell.js index ffa0de20c3..5c9417adc9 100644 --- a/src/languages/haskell.js +++ b/src/languages/haskell.js @@ -11,8 +11,8 @@ export default function(hljs) { variants: [ hljs.COMMENT('--', '$'), hljs.COMMENT( - '{-', - '-}', + /\{-/, + /-\}/, { contains: ['self'] } @@ -22,7 +22,7 @@ export default function(hljs) { var PRAGMA = { className: 'meta', - begin: '{-#', end: '#-}' + begin: /\{-#/, end: /#-\}/ }; var PREPROCESSOR = { diff --git a/src/languages/javascript.js b/src/languages/javascript.js index 875a930b34..146abc4da6 100644 --- a/src/languages/javascript.js +++ b/src/languages/javascript.js @@ -365,7 +365,7 @@ export default function(hljs) { '[^()]*' + '\\))*[^()]*' + '\\))*[^()]*' + - '\\)\\s*{', // end parens + '\\)\\s*\\{', // end parens returnBegin:true, contains: [ PARAMS, @@ -387,7 +387,7 @@ export default function(hljs) { beginKeywords: 'class', end: /[{;=]/, excludeEnd: true, - illegal: /[:"\[\]]/, + illegal: /[:"[\]]/, contains: [ { beginKeywords: 'extends' }, hljs.UNDERSCORE_TITLE_MODE @@ -395,7 +395,7 @@ export default function(hljs) { }, { begin: /\b(?=constructor)/, - end: /[\{;]/, + end: /[{;]/, excludeEnd: true, contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE }), @@ -405,7 +405,7 @@ export default function(hljs) { }, { begin: '(get|set)\\s+(?=' + IDENT_RE + '\\()', - end: /{/, + end: /\{/, keywords: "get set", contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE }), diff --git a/src/languages/less.js b/src/languages/less.js index 3c9d0d0fae..bc92d47bec 100644 --- a/src/languages/less.js +++ b/src/languages/less.js @@ -124,7 +124,7 @@ export default function(hljs) { IDENT_MODE('selector-class', '\\.' + INTERP_IDENT_RE, 0), IDENT_MODE('selector-tag', '&', 0), {className: 'selector-attr', begin: '\\[', end: '\\]'}, - {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/}, + {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9_\-+()"'.]+/}, {begin: '\\(', end: '\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins {begin: '!important'} // eat !important after mixin call or it will be colored as tag ] diff --git a/src/languages/lisp.js b/src/languages/lisp.js index 5b505cd1a5..365e8dda9e 100644 --- a/src/languages/lisp.js +++ b/src/languages/lisp.js @@ -6,9 +6,9 @@ Category: lisp */ export default function(hljs) { - var LISP_IDENT_RE = '[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*'; + var LISP_IDENT_RE = '[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*'; var MEC_RE = '\\|[^]*?\\|'; - var LISP_SIMPLE_NUMBER_RE = '(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?'; + var LISP_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?'; var LITERAL = { className: 'literal', begin: '\\b(t{1}|nil)\\b' diff --git a/src/languages/matlab.js b/src/languages/matlab.js index 0a75e8a5b0..b89a5de22e 100644 --- a/src/languages/matlab.js +++ b/src/languages/matlab.js @@ -84,7 +84,7 @@ export default function(hljs) { {begin: '\'\''}] }, { - begin: /\]|}|\)/, + begin: /\]|\}|\)/, relevance: 0, starts: TRANSPOSE }, @@ -97,8 +97,8 @@ export default function(hljs) { ], starts: TRANSPOSE }, - hljs.COMMENT('^\\s*\\%\\{\\s*$', '^\\s*\\%\\}\\s*$'), - hljs.COMMENT('\\%', '$') + hljs.COMMENT('^\\s*%\\{\\s*$', '^\\s*%\\}\\s*$'), + hljs.COMMENT('%', '$') ] }; } diff --git a/src/languages/perl.js b/src/languages/perl.js index 971d64f1c9..334b851050 100644 --- a/src/languages/perl.js +++ b/src/languages/perl.js @@ -40,8 +40,8 @@ export default function(hljs) { var VAR = { variants: [ {begin: /\$\d/}, - {begin: /[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/}, - {begin: /[\$%@][^\s\w{]/, relevance: 0} + {begin: /[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/}, + {begin: /[$%@][^\s\w{]/, relevance: 0} ] }; var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR]; diff --git a/src/languages/tap.js b/src/languages/tap.js index 2c789e6605..0365cb1ebb 100644 --- a/src/languages/tap.js +++ b/src/languages/tap.js @@ -22,7 +22,7 @@ export default function(hljs) { }, // YAML block { - begin: '(\s+)?---$', end: '\\.\\.\\.$', + begin: /---$/, end: '\\.\\.\\.$', subLanguage: 'yaml', relevance: 0 }, diff --git a/src/languages/yaml.js b/src/languages/yaml.js index d4b28981e3..f482eac337 100644 --- a/src/languages/yaml.js +++ b/src/languages/yaml.js @@ -11,7 +11,7 @@ export default function(hljs) { var LITERALS = 'true false yes no null'; // YAML spec allows non-reserved URI characters in tags. - var URI_CHARACTERS = '[\\w#;/?:@&=+$,.~*\\\'()[\\]]+'; + var URI_CHARACTERS = '[\\w#;/?:@&=+$,.~*\'()[\\]]+'; // Define keys as starting with a word character // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods @@ -29,8 +29,8 @@ export default function(hljs) { var TEMPLATE_VARIABLES = { className: 'template-variable', variants: [ - { begin: '{{', end: '}}' }, // jinja templates Ansible - { begin: '%{', end: '}' } // Ruby i18n + { begin: /\{\{/, end: /\}\}/ }, // jinja templates Ansible + { begin: /%\{/, end: /\}/ } // Ruby i18n ] }; var STRING = { @@ -140,7 +140,7 @@ export default function(hljs) { { // array listing className: 'bullet', // TODO: remove |$ hack when we have proper look-ahead support - begin: '\\-(?=[ ]|$)', + begin: '-(?=[ ]|$)', relevance: 0 }, hljs.HASH_COMMENT_MODE, From c4fa03505fd3ab933697f9a0ea4e297a91ff1209 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 00:38:14 -0400 Subject: [PATCH 08/23] wip --- src/languages/basic.js | 6 +++--- src/languages/css.js | 6 +++--- src/languages/django.js | 8 ++++---- src/languages/dts.js | 8 ++++---- src/languages/elm.js | 4 ++-- src/languages/gams.js | 2 +- src/languages/gcode.js | 2 +- src/languages/haml.js | 8 ++++---- src/languages/haxe.js | 2 +- src/languages/hsp.js | 2 +- src/languages/irpf90.js | 2 +- src/languages/leaf.js | 2 +- src/languages/livecodeserver.js | 2 +- src/languages/livescript.js | 2 +- src/languages/mel.js | 2 +- src/languages/moonscript.js | 2 +- src/languages/nginx.js | 2 +- src/languages/nix.js | 2 +- src/languages/openscad.js | 2 +- src/languages/parser3.js | 2 +- src/languages/perl.js | 12 ++++++------ src/languages/roboconf.js | 6 +++--- src/languages/sas.js | 2 +- src/lib/mode_compiler.js | 2 +- 24 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/languages/basic.js b/src/languages/basic.js index c37bedac71..5005add91f 100644 --- a/src/languages/basic.js +++ b/src/languages/basic.js @@ -35,7 +35,7 @@ export default function(hljs) { { // Match line numbers className: 'symbol', - begin: '^[0-9]+\ ', + begin: '^[0-9]+ ', relevance: 10 }, { @@ -47,12 +47,12 @@ export default function(hljs) { { // Match hexadecimal numbers (&Hxxxx) className: 'number', - begin: '(\&[hH][0-9a-fA-F]{1,4})' + begin: '(&[hH][0-9a-fA-F]{1,4})' }, { // Match octal numbers (&Oxxxxxx) className: 'number', - begin: '(\&[oO][0-7]{1,6})' + begin: '(&[oO][0-7]{1,6})' } ] }; diff --git a/src/languages/css.js b/src/languages/css.js index 054f4a2cc8..2ef3976c1b 100644 --- a/src/languages/css.js +++ b/src/languages/css.js @@ -46,10 +46,10 @@ export default function(hljs) { var AT_IDENTIFIER = '@[a-z-]+' // @font-face var AT_MODIFIERS = "and or not only" var MEDIA_TYPES = "all print screen speech" - var AT_PROPERTY_RE = /@\-?\w[\w]*(\-\w+)*/ // @-webkit-keyframes + var AT_PROPERTY_RE = /@-?\w[\w]*(-\w+)*/ // @-webkit-keyframes var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*'; var RULE = { - begin: /(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/, returnBegin: true, end: ';', endsWithParent: true, + begin: /(?:[A-Z_.-]+|--[a-zA-Z0-9_-]+)\s*:/, returnBegin: true, end: ';', endsWithParent: true, contains: [ ATTRIBUTE ] @@ -78,7 +78,7 @@ export default function(hljs) { }, { className: 'selector-pseudo', - begin: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/ + begin: /:(:)?[a-zA-Z0-9_+()"'.-]+/ }, // matching these here allows us to treat them more like regular CSS // rules so everything between the {} gets regular rule highlighting, diff --git a/src/languages/django.js b/src/languages/django.js index bf74f7e7c2..ba9fa57285 100644 --- a/src/languages/django.js +++ b/src/languages/django.js @@ -34,11 +34,11 @@ export default function(hljs) { case_insensitive: true, subLanguage: 'xml', contains: [ - hljs.COMMENT(/\{%\s*comment\s*%}/, /\{%\s*endcomment\s*%}/), - hljs.COMMENT(/\{#/, /#}/), + hljs.COMMENT(/\{%\s*comment\s*%\}/, /\{%\s*endcomment\s*%\}/), + hljs.COMMENT(/\{#/, /#\}/), { className: 'template-tag', - begin: /\{%/, end: /%}/, + begin: /\{%/, end: /%\}/, contains: [ { className: 'name', @@ -66,7 +66,7 @@ export default function(hljs) { }, { className: 'template-variable', - begin: /\{\{/, end: /}}/, + begin: /\{\{/, end: /\}\}/, contains: [FILTER] } ] diff --git a/src/languages/dts.js b/src/languages/dts.js index 5e5a241d6e..fa312b3fdc 100644 --- a/src/languages/dts.js +++ b/src/languages/dts.js @@ -59,7 +59,7 @@ export default function(hljs) { var DTS_REFERENCE = { className: 'variable', - begin: '\\&[a-z\\d_]*\\b' + begin: /&[a-z\d_]*\b/ }; var DTS_KEYWORD = { @@ -84,7 +84,7 @@ export default function(hljs) { var DTS_NODE = { className: 'class', - begin: /[a-zA-Z_][a-zA-Z\d_@]*\s{/, + begin: /[a-zA-Z_][a-zA-Z\d_@]*\s\{/, end: /[{;=]/, returnBegin: true, excludeEnd: true @@ -92,8 +92,8 @@ export default function(hljs) { var DTS_ROOT_NODE = { className: 'class', - begin: '/\\s*{', - end: '};', + begin: '/\\s*\\{', + end: /\};/, relevance: 10, contains: [ DTS_REFERENCE, diff --git a/src/languages/elm.js b/src/languages/elm.js index e7509c14f9..60e626a03e 100644 --- a/src/languages/elm.js +++ b/src/languages/elm.js @@ -10,8 +10,8 @@ export default function(hljs) { variants: [ hljs.COMMENT('--', '$'), hljs.COMMENT( - '{-', - '-}', + /\{-/, + /-\}/, { contains: ['self'] } diff --git a/src/languages/gams.js b/src/languages/gams.js index e94e045c70..06f307d58d 100644 --- a/src/languages/gams.js +++ b/src/languages/gams.js @@ -42,7 +42,7 @@ export default function (hljs) { var SYMBOLS = { className: 'symbol', variants: [ - {begin: /\=[lgenxc]=/}, + {begin: /=[lgenxc]=/}, {begin: /\$/}, ] }; diff --git a/src/languages/gcode.js b/src/languages/gcode.js index 93b86adde4..2e6c70a85f 100644 --- a/src/languages/gcode.js +++ b/src/languages/gcode.js @@ -7,7 +7,7 @@ export default function(hljs) { var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*'; - var GCODE_CLOSE_RE = '\\%'; + var GCODE_CLOSE_RE = '%'; var GCODE_KEYWORDS = { $pattern: GCODE_IDENT_RE, keyword: 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' + diff --git a/src/languages/haml.js b/src/languages/haml.js index 62e3eaabc4..e65353aeff 100644 --- a/src/languages/haml.js +++ b/src/languages/haml.js @@ -49,8 +49,8 @@ export default function(hljs) { begin: '\\.[\\w-]+' }, { - begin: '{\\s*', - end: '\\s*}', + begin: /\{\s*/, + end: /\s*\}/, contains: [ { begin: ':\\w+\\s*=>', @@ -104,9 +104,9 @@ export default function(hljs) { begin: '^\\s*[=~]\\s*' }, { - begin: '#{', + begin: /#\{/, starts: { - end: '}', + end: /\}/, subLanguage: 'ruby' } } diff --git a/src/languages/haxe.js b/src/languages/haxe.js index 355e051e64..7c04449a02 100644 --- a/src/languages/haxe.js +++ b/src/languages/haxe.js @@ -34,7 +34,7 @@ export default function(hljs) { begin: '\\$\\{', end: '\\}' }, { className: 'subst', // interpolation - begin: '\\$', end: '\\W}' + begin: '\\$', end: /\W\}/ } ] }, diff --git a/src/languages/hsp.js b/src/languages/hsp.js index 72d6b01e43..3487a2d91a 100644 --- a/src/languages/hsp.js +++ b/src/languages/hsp.js @@ -22,7 +22,7 @@ export default function(hljs) { { // multi-line string className: 'string', - begin: '{"', end: '"}', + begin: /\{"/, end: /"\}/, contains: [hljs.BACKSLASH_ESCAPE] }, diff --git a/src/languages/irpf90.js b/src/languages/irpf90.js index 80d4a80fa1..877f246066 100644 --- a/src/languages/irpf90.js +++ b/src/languages/irpf90.js @@ -77,7 +77,7 @@ export default function(hljs) { { className: 'number', // regex in both fortran and irpf90 should match - begin: '(?=\\b|\\+|\\-|\\.)(?:\\.|\\d+\\.?)\\d*([de][+-]?\\d+)?(_[a-z_\\d]+)?', + begin: '(?=\\b|\\+|-|\\.)(?:\\.|\\d+\\.?)\\d*([de][+-]?\\d+)?(_[a-z_\\d]+)?', relevance: 0 } ] diff --git a/src/languages/leaf.js b/src/languages/leaf.js index 937e3122d2..05f7644898 100644 --- a/src/languages/leaf.js +++ b/src/languages/leaf.js @@ -11,7 +11,7 @@ export default function (hljs) { { className: 'function', begin: '#+' + '[A-Za-z_0-9]*' + '\\(', - end:' {', + end:/ \{/, returnBegin: true, excludeEnd: true, contains : [ diff --git a/src/languages/livecodeserver.js b/src/languages/livecodeserver.js index ff5641c4d1..be53aff79b 100644 --- a/src/languages/livecodeserver.js +++ b/src/languages/livecodeserver.js @@ -165,6 +165,6 @@ export default function(hljs) { hljs.C_NUMBER_MODE, TITLE1 ].concat(COMMENT_MODES), - illegal: ';$|^\\[|^=|&|{' + illegal: ';$|^\\[|^=|&|\\{' }; } diff --git a/src/languages/livescript.js b/src/languages/livescript.js index a200bcde8b..5aa69f6f89 100644 --- a/src/languages/livescript.js +++ b/src/languages/livescript.js @@ -64,7 +64,7 @@ export default function(hljs) { var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE}); var SUBST = { className: 'subst', - begin: /#\{/, end: /}/, + begin: /#\{/, end: /\}/, keywords: KEYWORDS }; var SUBST_SIMPLE = { diff --git a/src/languages/mel.js b/src/languages/mel.js index 326557a25f..448eedbd4e 100644 --- a/src/languages/mel.js +++ b/src/languages/mel.js @@ -224,7 +224,7 @@ export default function(hljs) { contains: [hljs.BACKSLASH_ESCAPE] }, { // eats variables - begin: '[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)' + begin: '[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|\\{\\w+\\}|\\w+)' }, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE diff --git a/src/languages/moonscript.js b/src/languages/moonscript.js index 92007499a1..b66d0105f7 100644 --- a/src/languages/moonscript.js +++ b/src/languages/moonscript.js @@ -24,7 +24,7 @@ export default function(hljs) { var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; var SUBST = { className: 'subst', - begin: /#\{/, end: /}/, + begin: /#\{/, end: /\}/, keywords: KEYWORDS }; var EXPRESSIONS = [ diff --git a/src/languages/nginx.js b/src/languages/nginx.js index f8418078e8..a5690160bf 100644 --- a/src/languages/nginx.js +++ b/src/languages/nginx.js @@ -11,7 +11,7 @@ export default function(hljs) { className: 'variable', variants: [ {begin: /\$\d+/}, - {begin: /\$\{/, end: /}/}, + {begin: /\$\{/, end: /\}/}, {begin: '[\\$\\@]' + hljs.UNDERSCORE_IDENT_RE} ] }; diff --git a/src/languages/nix.js b/src/languages/nix.js index 92ff218cf5..e36f760e1e 100644 --- a/src/languages/nix.js +++ b/src/languages/nix.js @@ -19,7 +19,7 @@ export default function(hljs) { var ANTIQUOTE = { className: 'subst', begin: /\$\{/, - end: /}/, + end: /\}/, keywords: NIX_KEYWORDS }; var ATTRS = { diff --git a/src/languages/openscad.js b/src/languages/openscad.js index b1ad4abf44..ff1f19b635 100644 --- a/src/languages/openscad.js +++ b/src/languages/openscad.js @@ -39,7 +39,7 @@ export default function(hljs) { FUNCTIONS = { className: 'function', beginKeywords: 'module function', - end: '\\=|\\{', + end: /=|\{/, contains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE] }; diff --git a/src/languages/parser3.js b/src/languages/parser3.js index 8dca43c628..d5fa1ac03d 100644 --- a/src/languages/parser3.js +++ b/src/languages/parser3.js @@ -21,7 +21,7 @@ export default function(hljs) { hljs.COMMENT('^#', '$'), hljs.COMMENT( '\\^rem{', - '}', + /\}/, { relevance: 10, contains: [ diff --git a/src/languages/perl.js b/src/languages/perl.js index 334b851050..9ea76bef87 100644 --- a/src/languages/perl.js +++ b/src/languages/perl.js @@ -34,7 +34,7 @@ export default function(hljs) { keywords: PERL_KEYWORDS }; var METHOD = { - begin: '->{', end: '}' + begin: /->\{/, end: /\}/ // contains defined later }; var VAR = { @@ -49,8 +49,8 @@ export default function(hljs) { VAR, hljs.HASH_COMMENT_MODE, hljs.COMMENT( - '^\\=\\w', - '\\=cut', + /^=\w/, + /=cut/, { endsWithParent: true } @@ -77,7 +77,7 @@ export default function(hljs) { relevance: 5 }, { - begin: 'q[qwxr]?\\s*\\<', end: '\\>', + begin: 'q[qwxr]?\\s*<', end: '>', relevance: 5 }, { @@ -96,12 +96,12 @@ export default function(hljs) { contains: [hljs.BACKSLASH_ESCAPE] }, { - begin: '{\\w+}', + begin: /\{\w+\}/, contains: [], relevance: 0 }, { - begin: '\-?\\w+\\s*\\=\\>', + begin: '-?\\w+\\s*=>', contains: [], relevance: 0 } diff --git a/src/languages/roboconf.js b/src/languages/roboconf.js index 8722fab5c4..e4457af933 100644 --- a/src/languages/roboconf.js +++ b/src/languages/roboconf.js @@ -37,7 +37,7 @@ export default function(hljs) { // Facet sections { begin: '^facet ' + IDENTIFIER, - end: '}', + end: /\}/, keywords: 'facet', contains: [ PROPERTY, @@ -48,7 +48,7 @@ export default function(hljs) { // Instance sections { begin: '^\\s*instance of ' + IDENTIFIER, - end: '}', + end: /\}/, keywords: 'name count channels instance-data instance-state instance of', illegal: /\S/, contains: [ @@ -61,7 +61,7 @@ export default function(hljs) { // Component sections { begin: '^' + IDENTIFIER, - end: '}', + end: /\}/, contains: [ PROPERTY, hljs.HASH_COMMENT_MODE diff --git a/src/languages/sas.js b/src/languages/sas.js index d5afe5a99e..7c5461fe55 100644 --- a/src/languages/sas.js +++ b/src/languages/sas.js @@ -97,7 +97,7 @@ export default function(hljs) { { // Macro variables className: 'variable', - begin: /\&[a-zA-Z_\&][a-zA-Z0-9_]*\.?/ + begin: /&[a-zA-Z_&][a-zA-Z0-9_]*\.?/ }, { // Special emphasis for datalines|cards diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 5d1df3e6e4..220f0af53b 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -24,7 +24,7 @@ export function compileLanguage(language) { function langRe(value, global) { return new RegExp( regex.source(value), - 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + 'um' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') ); } From d1778a1a69614a7b9b966a493174a7e99d72741b Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 01:16:35 -0400 Subject: [PATCH 09/23] done --- src/languages/angelscript.js | 2 +- src/languages/basic.js | 2 +- src/languages/gams.js | 2 +- src/languages/livescript.js | 8 ++++---- src/languages/mel.js | 2 +- src/languages/nginx.js | 6 +++--- src/languages/nim.js | 4 ++-- src/languages/nsis.js | 10 +++++----- src/languages/parser3.js | 6 +++--- src/languages/prolog.js | 6 ++---- src/languages/qml.js | 2 +- src/languages/routeros.js | 10 +++++----- src/languages/ruleslanguage.js | 4 ++-- src/languages/sas.js | 2 +- src/languages/scss.js | 2 +- src/languages/smali.js | 4 ++-- src/languages/smalltalk.js | 2 +- src/languages/stylus.js | 4 ++-- src/languages/vbnet.js | 2 +- src/languages/vhdl.js | 2 +- src/languages/xml.js | 2 +- src/lib/mode_compiler.js | 2 +- 22 files changed, 42 insertions(+), 44 deletions(-) diff --git a/src/languages/angelscript.js b/src/languages/angelscript.js index 260f7c9514..5f88af397a 100644 --- a/src/languages/angelscript.js +++ b/src/languages/angelscript.js @@ -37,7 +37,7 @@ export default function(hljs) { 'abstract|0 try catch protected explicit property', // avoid close detection with C# and JS - illegal: '(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\s*[^\\(])', + illegal: '(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])', contains: [ { // 'strings' diff --git a/src/languages/basic.js b/src/languages/basic.js index 5005add91f..9143058f5f 100644 --- a/src/languages/basic.js +++ b/src/languages/basic.js @@ -13,7 +13,7 @@ export default function(hljs) { illegal: '^\.', // Support explicitly typed variables that end with $%! or #. keywords: { - $pattern: '[a-zA-Z][a-zA-Z0-9_\$\%\!\#]*', + $pattern: '[a-zA-Z][a-zA-Z0-9_$%!#]*', keyword: 'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' + 'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' + diff --git a/src/languages/gams.js b/src/languages/gams.js index 06f307d58d..3bf86d58fe 100644 --- a/src/languages/gams.js +++ b/src/languages/gams.js @@ -78,7 +78,7 @@ export default function (hljs) { ASSIGNMENT, { className: 'comment', - begin: /([ ]*[a-z0-9&#*=?@>\\<:\-,()$\[\]_.{}!+%^]+)+/, + begin: /([ ]*[a-z0-9&#*=?@><:\-,()$[\]_.{}!+%^]+)+/, relevance: 0 }, ], diff --git a/src/languages/livescript.js b/src/languages/livescript.js index 5aa69f6f89..c8e9f81301 100644 --- a/src/languages/livescript.js +++ b/src/languages/livescript.js @@ -60,7 +60,7 @@ export default function(hljs) { literal: ECMAScript.LITERALS.concat(LIVESCRIPT_LITERALS).join(" "), built_in: ECMAScript.BUILT_INS.concat(LIVESCRIPT_BUILT_INS).join(" ") }; - var JS_IDENT_RE = '[A-Za-z$_](?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*'; + 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', @@ -69,7 +69,7 @@ export default function(hljs) { }; var SUBST_SIMPLE = { className: 'subst', - begin: /#[A-Za-z$_]/, end: /(?:\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/, + begin: /#[A-Za-z$_]/, end: /(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/, keywords: KEYWORDS }; var EXPRESSIONS = [ @@ -145,7 +145,7 @@ export default function(hljs) { }; var SYMBOLS = { - begin: '(#=>|=>|\\|>>|-?->|\\!->)' + begin: '(#=>|=>|\\|>>|-?->|!->)' }; return { @@ -163,7 +163,7 @@ export default function(hljs) { returnBegin: true, variants: [ { - begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?', end: '\\->\\*?' + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B->\\*?', end: '->\\*?' }, { begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?', end: '[-~]{1,2}>\\*?' diff --git a/src/languages/mel.js b/src/languages/mel.js index 448eedbd4e..42a71377cd 100644 --- a/src/languages/mel.js +++ b/src/languages/mel.js @@ -224,7 +224,7 @@ export default function(hljs) { contains: [hljs.BACKSLASH_ESCAPE] }, { // eats variables - begin: '[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|\\{\\w+\\}|\\w+)' + begin: /[$%@](\^\w\b|#\w+|[^\s\w{]|\{\w+\}|\w+)/ }, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE diff --git a/src/languages/nginx.js b/src/languages/nginx.js index a5690160bf..f32a2173fa 100644 --- a/src/languages/nginx.js +++ b/src/languages/nginx.js @@ -12,7 +12,7 @@ export default function(hljs) { variants: [ {begin: /\$\d+/}, {begin: /\$\{/, end: /\}/}, - {begin: '[\\$\\@]' + hljs.UNDERSCORE_IDENT_RE} + {begin: /[$@]/ + hljs.UNDERSCORE_IDENT_RE} ] }; var DEFAULT = { @@ -44,9 +44,9 @@ export default function(hljs) { className: 'regexp', contains: [hljs.BACKSLASH_ESCAPE, VAR], variants: [ - {begin: "\\s\\^", end: "\\s|{|;", returnEnd: true}, + {begin: "\\s\\^", end: "\\s|\\{|;", returnEnd: true}, // regexp locations (~, ~*) - {begin: "~\\*?\\s+", end: "\\s|{|;", returnEnd: true}, + {begin: "~\\*?\\s+", end: "\\s|\\{|;", returnEnd: true}, // *.example.com {begin: "\\*(\\.[a-z\\-]+)+"}, // sub.example.* diff --git a/src/languages/nim.js b/src/languages/nim.js index 1caaa67a16..6c7e56bc87 100644 --- a/src/languages/nim.js +++ b/src/languages/nim.js @@ -28,8 +28,8 @@ export default function(hljs) { }, contains: [ { className: 'meta', // Actually pragma - begin: /{\./, - end: /\.}/, + begin: /\{\./, + end: /\.\}/, relevance: 10 }, { className: 'string', diff --git a/src/languages/nsis.js b/src/languages/nsis.js index cddaaec249..17cfc950b1 100644 --- a/src/languages/nsis.js +++ b/src/languages/nsis.js @@ -14,20 +14,20 @@ export default function(hljs) { var DEFINES = { // ${defines} className: 'variable', - begin: /\$+{[\w\.:-]+}/ + begin: /\$+\{[\w.:-]+\}/ }; var VARIABLES = { // $variables className: 'variable', begin: /\$+\w+/, - illegal: /\(\){}/ + illegal: /\(\)\{\}/ }; var LANGUAGES = { // $(language_strings) className: 'variable', - begin: /\$+\([\w\^\.:-]+\)/ + begin: /\$+\([\w^.:-]+\)/ }; var PARAMETERS = { @@ -39,7 +39,7 @@ export default function(hljs) { var COMPILER = { // !compiler_flags className: 'keyword', - begin: /\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/ + begin: /!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/ }; var METACHARS = { @@ -51,7 +51,7 @@ export default function(hljs) { var PLUGINS = { // plug::ins className: 'class', - begin: /\w+\:\:\w+/ + begin: /\w+::\w+/ }; var STRING = { diff --git a/src/languages/parser3.js b/src/languages/parser3.js index d5fa1ac03d..18ee3634ae 100644 --- a/src/languages/parser3.js +++ b/src/languages/parser3.js @@ -20,7 +20,7 @@ export default function(hljs) { contains: [ hljs.COMMENT('^#', '$'), hljs.COMMENT( - '\\^rem{', + /\\^rem\{/, /\}/, { relevance: 10, @@ -40,11 +40,11 @@ export default function(hljs) { }, { className: 'variable', - begin: '\\$\\{?[\\w\\-\\.\\:]+\\}?' + begin: /\$\{?[\w\-.:]+\}?/ }, { className: 'keyword', - begin: '\\^[\\w\\-\\.\\:]+' + begin: /\^[\w\-.:]+/ }, { className: 'number', diff --git a/src/languages/prolog.js b/src/languages/prolog.js index 926a7df796..33695ad090 100644 --- a/src/languages/prolog.js +++ b/src/languages/prolog.js @@ -51,15 +51,13 @@ export default function(hljs) { }; var CHAR_CODE = { - className: 'string', // 0'a etc. - begin: /0\'(\\\'|.)/ + begin: /0'(\\'|.)/ }; var SPACE_CODE = { - className: 'string', - begin: /0\'\\s/ // 0'\s + begin: /0'\\s/ // 0'\s }; var PRED_OP = { // relevance booster diff --git a/src/languages/qml.js b/src/languages/qml.js index 803955eb6c..a1c7d83c99 100644 --- a/src/languages/qml.js +++ b/src/languages/qml.js @@ -90,7 +90,7 @@ export default function(hljs) { // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }. // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {. var QML_OBJECT = { - begin: QML_IDENT_RE + '\\s*{', end: /\{/, + begin: QML_IDENT_RE + /\s*\{/, end: /\{/, returnBegin: true, relevance: 0, contains: [ diff --git a/src/languages/routeros.js b/src/languages/routeros.js index 8fa38223fe..936967a523 100644 --- a/src/languages/routeros.js +++ b/src/languages/routeros.js @@ -38,7 +38,7 @@ export default function(hljs) { className: 'variable', variants: [ {begin: /\$[\w\d#@][\w\d_]*/}, - {begin: /\$\{(.*?)}/} + {begin: /\$\{(.*?)\}/} ] }; @@ -82,7 +82,7 @@ export default function(hljs) { { begin: /^'/, end: /$/, }, // Monkey one line comment { begin: /^\s*\/[\w-]+=/, end: /$/, }, // jboss-cli { begin: /\/\//, end: /$/, }, // Stan comment - { begin: /^\[\\]$/, }, // F# class declaration? + { begin: /^\[\]$/, }, // F# class declaration? { begin: /<\//, end: />/, }, // HTML tags { begin: /^facet /, end: /\}/, }, // roboconf - лютый костыль ))) { begin: '^1\\.\\.(\\d+)$', end: /$/, }, // tap @@ -94,7 +94,7 @@ export default function(hljs) { APOS_STRING, VAR, { // attribute=value - begin: /[\w-]+\=([^\s\{\}\[\]\(\)]+)/, + begin: /[\w-]+=([^\s{}[\]()]+)/, relevance: 0, returnBegin: true, contains: [ @@ -131,7 +131,7 @@ export default function(hljs) { { // Не форматировать не классифицированные значения. Необходимо для исключения подсветки значений как built_in. // className: 'number', - begin: /("[^"]*"|[^\s\{\}\[\]]+)/, + begin: /("[^"]*"|[^\s{}[\]]+)/, }, //*/ ] } //*/ @@ -144,7 +144,7 @@ export default function(hljs) { }, //*/ { - begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s\[\(]|\])', + begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s[(\\]|])', returnBegin: true, contains: [ { diff --git a/src/languages/ruleslanguage.js b/src/languages/ruleslanguage.js index 8038bf0e62..12368949fe 100644 --- a/src/languages/ruleslanguage.js +++ b/src/languages/ruleslanguage.js @@ -60,8 +60,8 @@ export default function(hljs) { { className: 'literal', variants: [ - {begin: '#\\s+[a-zA-Z\\ \\.]*', relevance: 0}, // looks like #-comment - {begin: '#[a-zA-Z\\ \\.]+'} + {begin: '#\\s+[a-zA-Z .]*', relevance: 0}, // looks like #-comment + {begin: '#[a-zA-Z .]+'} ] } ] diff --git a/src/languages/sas.js b/src/languages/sas.js index 7c5461fe55..a14677283e 100644 --- a/src/languages/sas.js +++ b/src/languages/sas.js @@ -92,7 +92,7 @@ export default function(hljs) { { // Distinct highlight for proc , data, run, quit className: 'keyword', - begin: /^\s*(proc [\w\d_]+|data|run|quit)[\s\;]/ + begin: /^\s*(proc [\w\d_]+|data|run|quit)[\s;]/ }, { // Macro variables diff --git a/src/languages/scss.js b/src/languages/scss.js index 90ed1b5a57..460c780951 100644 --- a/src/languages/scss.js +++ b/src/languages/scss.js @@ -43,7 +43,7 @@ export default function(hljs) { hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, { - className: 'selector-id', begin: '\\#[A-Za-z0-9_-]+', + className: 'selector-id', begin: '#[A-Za-z0-9_-]+', relevance: 0 }, { diff --git a/src/languages/smali.js b/src/languages/smali.js index 70f36c5831..b23072f5aa 100644 --- a/src/languages/smali.js +++ b/src/languages/smali.js @@ -41,11 +41,11 @@ export default function(hljs) { begin: '\\s('+smali_instr_low_prio.join('|')+')\\s' }, { - begin: '\\s('+smali_instr_low_prio.join('|')+')((\\-|/)[a-zA-Z0-9]+)+\\s', + begin: '\\s('+smali_instr_low_prio.join('|')+')((-|/)[a-zA-Z0-9]+)+\\s', relevance: 10 }, { - begin: '\\s('+smali_instr_high_prio.join('|')+')((\\-|/)[a-zA-Z0-9]+)*\\s', + begin: '\\s('+smali_instr_high_prio.join('|')+')((-|/)[a-zA-Z0-9]+)*\\s', relevance: 10 }, ] diff --git a/src/languages/smalltalk.js b/src/languages/smalltalk.js index 543fc6cdda..bd578dd492 100644 --- a/src/languages/smalltalk.js +++ b/src/languages/smalltalk.js @@ -44,7 +44,7 @@ export default function(hljs) { contains: [{begin: '(\\|[ ]*)?' + VAR_IDENT_RE}] }, { - begin: '\\#\\(', end: '\\)', + begin: '#\\(', end: '\\)', contains: [ hljs.APOS_STRING_MODE, CHAR, diff --git a/src/languages/stylus.js b/src/languages/stylus.js index 7496de6f7a..c0bbc90e87 100644 --- a/src/languages/stylus.js +++ b/src/languages/stylus.js @@ -122,7 +122,7 @@ export default function(hljs) { 'video' ]; - var LOOKAHEAD_TAG_END = '(?=[\\.\\s\\n\\[\\:,])'; + var LOOKAHEAD_TAG_END = '(?=[.\\s\\n\\[:,])'; var ATTRIBUTES = [ 'align-content', @@ -372,7 +372,7 @@ export default function(hljs) { // id tag { - begin: '\\#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END, + begin: '#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END, className: 'selector-id' }, diff --git a/src/languages/vbnet.js b/src/languages/vbnet.js index 405f91c461..cb51c1f285 100644 --- a/src/languages/vbnet.js +++ b/src/languages/vbnet.js @@ -30,7 +30,7 @@ export default function(hljs) { literal: 'true false nothing' }, - illegal: '//|{|}|endif|gosub|variant|wend|^\\$ ', /* reserved deprecated keywords */ + illegal: '//|\\{|\\}|endif|gosub|variant|wend|^$ ', /* reserved deprecated keywords */ contains: [ hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '""'}]}), hljs.COMMENT( diff --git a/src/languages/vhdl.js b/src/languages/vhdl.js index c5c49d8010..3b38be6009 100644 --- a/src/languages/vhdl.js +++ b/src/languages/vhdl.js @@ -44,7 +44,7 @@ export default function(hljs) { 'false true note warning error failure ' + // severity_level 'line text side width' // textio }, - illegal: '{', + illegal: /\{/, contains: [ hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting. hljs.COMMENT('--', '$'), diff --git a/src/languages/xml.js b/src/languages/xml.js index a7d4e2b19f..75ca4051dc 100644 --- a/src/languages/xml.js +++ b/src/languages/xml.js @@ -120,7 +120,7 @@ export default function(hljs) { keywords: {name: 'script'}, contains: [TAG_INTERNALS], starts: { - end: '\<\/script\>', returnEnd: true, + end: /<\/script>/, returnEnd: true, subLanguage: ['javascript', 'handlebars', 'xml'] } }, diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 220f0af53b..5d1df3e6e4 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -24,7 +24,7 @@ export function compileLanguage(language) { function langRe(value, global) { return new RegExp( regex.source(value), - 'um' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') ); } From 19c57b217702a55a1d7e9d779b9e15af5ba08e64 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 01:44:30 -0400 Subject: [PATCH 10/23] speed up slow regex --- src/languages/mipsasm.js | 20 ++++++++++---------- src/languages/yaml.js | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/languages/mipsasm.js b/src/languages/mipsasm.js index f7444428bf..0a5cca74c9 100644 --- a/src/languages/mipsasm.js +++ b/src/languages/mipsasm.js @@ -36,18 +36,18 @@ export default function(hljs) { begin: '\\b('+ //mnemonics // 32-bit integer instructions 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' + - 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\.hb)?|jr(\.hb)?|lbu?|lhu?|' + + 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' + 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' + 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' + 'srlv?|subu?|sw[lr]?|xori?|wsbh|' + // floating-point instructions - 'abs\.[sd]|add\.[sd]|alnv.ps|bc1[ft]l?|' + - 'c\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\.[sd]|' + - '(ceil|floor|round|trunc)\.[lw]\.[sd]|cfc1|cvt\.d\.[lsw]|' + - 'cvt\.l\.[dsw]|cvt\.ps\.s|cvt\.s\.[dlw]|cvt\.s\.p[lu]|cvt\.w\.[dls]|' + - 'div\.[ds]|ldx?c1|luxc1|lwx?c1|madd\.[sd]|mfc1|mov[fntz]?\.[ds]|' + - 'msub\.[sd]|mth?c1|mul\.[ds]|neg\.[ds]|nmadd\.[ds]|nmsub\.[ds]|' + - 'p[lu][lu]\.ps|recip\.fmt|r?sqrt\.[ds]|sdx?c1|sub\.[ds]|suxc1|' + + 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' + + 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' + + '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' + + 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' + + 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' + + 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' + + 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' + 'swx?c1|' + // system control instructions 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' + @@ -57,7 +57,7 @@ export default function(hljs) { end: '\\s' }, // lines ending with ; or # aren't really comments, probably auto-detect fail - hljs.COMMENT('[;#](?!\s*$)', '$'), + hljs.COMMENT('[;#](?!\\s*$)', '$'), hljs.C_BLOCK_COMMENT_MODE, hljs.QUOTE_STRING_MODE, { @@ -90,6 +90,6 @@ export default function(hljs) { relevance: 0 } ], - illegal: '\/' + illegal: /\// }; } diff --git a/src/languages/yaml.js b/src/languages/yaml.js index f482eac337..0951125ee4 100644 --- a/src/languages/yaml.js +++ b/src/languages/yaml.js @@ -102,7 +102,7 @@ export default function(hljs) { // Indentation of subsequent lines must be the same to // be considered part of the block className: 'string', - begin: '[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*' + begin: '[\\|>]([0-9]?[+-])?[ ]*\\n( *)[^\\n]+\\n(\\2[^\\n]+\\n?)*' }, { // Ruby/Rails erb begin: '<%[%=-]?', From be62eb54b25d844742216db2be9c245be76baeb3 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 11:50:12 -0400 Subject: [PATCH 11/23] fix small regression --- src/languages/vbnet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/vbnet.js b/src/languages/vbnet.js index cb51c1f285..8346a80c37 100644 --- a/src/languages/vbnet.js +++ b/src/languages/vbnet.js @@ -30,7 +30,7 @@ export default function(hljs) { literal: 'true false nothing' }, - illegal: '//|\\{|\\}|endif|gosub|variant|wend|^$ ', /* reserved deprecated keywords */ + illegal: '//|\\{|\\}|endif|gosub|variant|wend|^\\$ ', /* reserved deprecated keywords */ contains: [ hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '""'}]}), hljs.COMMENT( From 42cf9c30791154f51749a74b2081ea2228d3f1e5 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 12:24:46 -0400 Subject: [PATCH 12/23] remove non-capture mode, seems to be measurably faster --- src/languages/lsl.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/languages/lsl.js b/src/languages/lsl.js index ebab6c1221..08f57d782c 100644 --- a/src/languages/lsl.js +++ b/src/languages/lsl.js @@ -31,29 +31,29 @@ export default function(hljs) { className: 'literal', variants: [ { - begin: '\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b' + begin: '\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b' }, { - begin: '\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b' + begin: '\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b' }, { - begin: '\\b(?:FALSE|TRUE)\\b' + begin: '\\b(FALSE|TRUE)\\b' }, { - begin: '\\b(?:ZERO_ROTATION)\\b' + begin: '\\b(ZERO_ROTATION)\\b' }, { - begin: '\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b' + begin: '\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\b' }, { - begin: '\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b' + begin: '\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\b' } ] }; var LSL_FUNCTIONS = { className: 'built_in', - begin: '\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b' + begin: '\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b' }; return { @@ -74,10 +74,10 @@ export default function(hljs) { className: 'section', variants: [ { - begin: '\\b(?:state|default)\\b' + begin: '\\b(state|default)\\b' }, { - begin: '\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b' + begin: '\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\b' } ] }, @@ -85,7 +85,7 @@ export default function(hljs) { LSL_CONSTANTS, { className: 'type', - begin: '\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b' + begin: '\\b(integer|float|string|key|vector|quaternion|rotation|list)\\b' } ] }; From b8bf1641e73374ba1aed612512d629cec7395a40 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 16 Oct 2020 12:46:18 -0400 Subject: [PATCH 13/23] revert this --- src/highlight.js | 6 ++++++ src/lib/mode_compiler.js | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/highlight.js b/src/highlight.js index 421d645176..0ae6efdfae 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -579,12 +579,17 @@ const HLJS = function(hljs) { @param {Array} [languageSubset] @returns {AutoHighlightResult} */ + let ts = {}; function highlightAuto(code, languageSubset) { languageSubset = languageSubset || options.languages || Object.keys(languages); var result = justTextHighlightResult(code); var secondBest = result; languageSubset.filter(getLanguage).filter(autoDetection).forEach(function(name) { + var before = new Date(); var current = _highlight(name, code, false); + var after = new Date(); + ts[name] = ts[name] || 0; + ts[name] += (after-before); current.language = name; if (current.relevance > secondBest.relevance) { secondBest = current; @@ -598,6 +603,7 @@ const HLJS = function(hljs) { // second_best (with underscore) is the expected API result.second_best = secondBest; } + console.log(Object.entries(ts).sort((a,b) => b[1]-a[1])); return result; } diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 5d1df3e6e4..220f0af53b 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -24,7 +24,7 @@ export function compileLanguage(language) { function langRe(value, global) { return new RegExp( regex.source(value), - 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + 'um' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') ); } From e2554d578d99b772f41ad116e18ec378f1ccd7dd Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Sun, 25 Oct 2020 16:48:36 -0400 Subject: [PATCH 14/23] Update src/languages/mipsasm.js --- src/languages/mipsasm.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/mipsasm.js b/src/languages/mipsasm.js index 0a5cca74c9..6c76ed6da7 100644 --- a/src/languages/mipsasm.js +++ b/src/languages/mipsasm.js @@ -90,6 +90,7 @@ export default function(hljs) { relevance: 0 } ], + // forward slashes are not allowed illegal: /\// }; } From ca6c8993743d0696b8277953e7a1313956caf2cc Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Sun, 25 Oct 2020 16:53:57 -0400 Subject: [PATCH 15/23] fix qml regression --- src/languages/qml.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/languages/qml.js b/src/languages/qml.js index a1c7d83c99..e61f9863ec 100644 --- a/src/languages/qml.js +++ b/src/languages/qml.js @@ -8,6 +8,8 @@ Website: https://doc.qt.io/qt-5/qmlapplications.html Category: scripting */ +import * as regex from '../lib/regex.js'; + export default function(hljs) { var KEYWORDS = { keyword: @@ -90,7 +92,7 @@ export default function(hljs) { // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }. // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {. var QML_OBJECT = { - begin: QML_IDENT_RE + /\s*\{/, end: /\{/, + begin: regex.concat(QML_IDENT_RE, /\s*\{/), end: /\{/, returnBegin: true, relevance: 0, contains: [ From 3f06e89454b695873a3a21e32ce430baf1368a94 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Tue, 27 Oct 2020 02:13:01 -0400 Subject: [PATCH 16/23] fix JS regression --- src/languages/javascript.js | 4 ++-- src/lib/mode_compiler.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/languages/javascript.js b/src/languages/javascript.js index 146abc4da6..0c2b21a65e 100644 --- a/src/languages/javascript.js +++ b/src/languages/javascript.js @@ -182,8 +182,8 @@ export default function(hljs) { .concat({ // we need to pair up {} inside our subst to prevent // it from ending too early by matching another } - begin: /{/, - end: /}/, + begin: /\{/, + end: /\}/, keywords: KEYWORDS, contains: [ "self" diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 220f0af53b..5d1df3e6e4 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -24,7 +24,7 @@ export function compileLanguage(language) { function langRe(value, global) { return new RegExp( regex.source(value), - 'um' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') + 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '') ); } From 51eef19bc24cec46b853fdfc6664e07c7f2040f8 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Tue, 27 Oct 2020 03:41:20 -0400 Subject: [PATCH 17/23] add comment --- src/languages/routeros.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/routeros.js b/src/languages/routeros.js index 936967a523..2bcb74ab9e 100644 --- a/src/languages/routeros.js +++ b/src/languages/routeros.js @@ -142,8 +142,8 @@ export default function(hljs) { className: 'number', begin: /\*[0-9a-fA-F]+/, }, //*/ - { + // command followed by space, `|`, `(`, `[`, `]`, or `|` begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s[(\\]|])', returnBegin: true, contains: [ From 2352f7721619e48b25c9bac1aad72cc577b9ed4f Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Nov 2020 09:42:53 -0500 Subject: [PATCH 18/23] remove ambiguity --- src/languages/ebnf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/ebnf.js b/src/languages/ebnf.js index 2d3f9f93fe..45d8186fdd 100644 --- a/src/languages/ebnf.js +++ b/src/languages/ebnf.js @@ -9,7 +9,7 @@ export default function(hljs) { var nonTerminalMode = { className: "attribute", - begin: /^[ ]*[a-zA-Z][a-zA-Z-_]*([\s\-_]+[a-zA-Z][a-zA-Z]*)*/ + begin: /^[ ]*[a-zA-Z][a-zA-Z_-]*([\s_-]+[a-zA-Z][a-zA-Z]*)*/ }; var specialSequenceMode = { From 427e1b2432c45a52c4363741a3c3bbabf37c4430 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Nov 2020 09:55:03 -0500 Subject: [PATCH 19/23] remove wasted escape --- src/languages/stylus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/stylus.js b/src/languages/stylus.js index c0bbc90e87..67effd18c2 100644 --- a/src/languages/stylus.js +++ b/src/languages/stylus.js @@ -122,7 +122,7 @@ export default function(hljs) { 'video' ]; - var LOOKAHEAD_TAG_END = '(?=[.\\s\\n\\[:,])'; + var LOOKAHEAD_TAG_END = '(?=[.\\s\\n[:,])'; var ATTRIBUTES = [ 'align-content', From c9fa9c53977ab11073a437896842ad8b73c2ac9d Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Nov 2020 11:48:41 -0500 Subject: [PATCH 20/23] add \ back, move - to end --- src/languages/gams.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/gams.js b/src/languages/gams.js index 3bf86d58fe..0aeb0c23ad 100644 --- a/src/languages/gams.js +++ b/src/languages/gams.js @@ -78,7 +78,7 @@ export default function (hljs) { ASSIGNMENT, { className: 'comment', - begin: /([ ]*[a-z0-9&#*=?@><:\-,()$[\]_.{}!+%^]+)+/, + begin: /([ ]*[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+)+/, relevance: 0 }, ], From 48576ca24b826973acb855ed2cab6225ddd8941c Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Nov 2020 18:13:15 -0500 Subject: [PATCH 21/23] Update src/languages/yaml.js Co-authored-by: Vladimir Jimenez --- src/languages/yaml.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/yaml.js b/src/languages/yaml.js index 0951125ee4..f4257be176 100644 --- a/src/languages/yaml.js +++ b/src/languages/yaml.js @@ -102,7 +102,7 @@ export default function(hljs) { // Indentation of subsequent lines must be the same to // be considered part of the block className: 'string', - begin: '[\\|>]([0-9]?[+-])?[ ]*\\n( *)[^\\n]+\\n(\\2[^\\n]+\\n?)*' + begin: '[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^\\n]+\\n(\\2[^\\n]+\\n?)*' }, { // Ruby/Rails erb begin: '<%[%=-]?', From 411de52f9003c824add07001d884b4c1937aea72 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Nov 2020 18:27:31 -0500 Subject: [PATCH 22/23] Revert "revert this" This reverts commit b8bf1641e73374ba1aed612512d629cec7395a40. --- src/highlight.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/highlight.js b/src/highlight.js index 0ae6efdfae..421d645176 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -579,17 +579,12 @@ const HLJS = function(hljs) { @param {Array} [languageSubset] @returns {AutoHighlightResult} */ - let ts = {}; function highlightAuto(code, languageSubset) { languageSubset = languageSubset || options.languages || Object.keys(languages); var result = justTextHighlightResult(code); var secondBest = result; languageSubset.filter(getLanguage).filter(autoDetection).forEach(function(name) { - var before = new Date(); var current = _highlight(name, code, false); - var after = new Date(); - ts[name] = ts[name] || 0; - ts[name] += (after-before); current.language = name; if (current.relevance > secondBest.relevance) { secondBest = current; @@ -603,7 +598,6 @@ const HLJS = function(hljs) { // second_best (with underscore) is the expected API result.second_best = secondBest; } - console.log(Object.entries(ts).sort((a,b) => b[1]-a[1])); return result; } From d6461cd55e686e4224c2ac3d969f552dff8e7f27 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Nov 2020 18:35:26 -0500 Subject: [PATCH 23/23] pull in refactor from master --- src/languages/routeros.js | 115 ++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 60 deletions(-) diff --git a/src/languages/routeros.js b/src/languages/routeros.js index 2bcb74ab9e..b3c6a64132 100644 --- a/src/languages/routeros.js +++ b/src/languages/routeros.js @@ -12,18 +12,17 @@ Website: https://wiki.mikrotik.com/wiki/Manual:Scripting // light-brown - #9A9900 export default function(hljs) { - - var STATEMENTS = 'foreach do while for if from to step else on-error and or not in'; + const 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'; + const 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'; + const 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'; + const 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'; + const 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: @@ -32,38 +31,41 @@ export default function(hljs) { // 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'; + const VAR_PREFIX = 'global local set for foreach'; - var VAR = { + const VAR = { className: 'variable', variants: [ - {begin: /\$[\w\d#@][\w\d_]*/}, - {begin: /\$\{(.*?)\}/} + { begin: /\$[\w\d#@][\w\d_]*/ }, + { begin: /\$\{(.*?)\}/ } ] }; - var QUOTE_STRING = { + const QUOTE_STRING = { className: 'string', - begin: /"/, end: /"/, + begin: /"/, + end: /"/, contains: [ hljs.BACKSLASH_ESCAPE, VAR, { className: 'variable', - begin: /\$\(/, end: /\)/, + begin: /\$\(/, + end: /\)/, contains: [hljs.BACKSLASH_ESCAPE] } ] }; - var APOS_STRING = { + const APOS_STRING = { className: 'string', - begin: /'/, end: /'/ + 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)'; - ////////////////////////////////////////////////////////////////////// + const 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'; + const IPADDR_wBITMASK = IPADDR + '/(3[0-2]|[1-2][0-9]|\\d)'; + return { name: 'Microtik RouterOS script', aliases: ['routeros', 'mikrotik'], @@ -71,23 +73,16 @@ export default function(hljs) { keywords: { $pattern: /:?[\w-]+/, literal: LITERALS, - keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :'), + keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :') }, contains: [ - { // недопустимые конструкции + { // illegal syntax 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: /^\[\]$/, }, // F# class declaration? - { begin: /<\//, end: />/, }, // HTML tags - { begin: /^facet /, end: /\}/, }, // roboconf - лютый костыль ))) - { begin: '^1\\.\\.(\\d+)$', end: /$/, }, // tap + { begin: /\/\*/, end: /\*\// }, // -- comment + { begin: /\/\//, end: /$/ }, // Stan comment + { begin: /<\//, end: />/ }, // HTML tags ], - illegal: /./, + illegal: /./ }, hljs.COMMENT('^#', '$'), QUOTE_STRING, @@ -104,7 +99,7 @@ export default function(hljs) { }, { begin: /=/, - endsWithParent: true, + endsWithParent: true, relevance: 0, contains: [ QUOTE_STRING, @@ -112,9 +107,14 @@ export default function(hljs) { VAR, { className: 'literal', - begin: '\\b(' + LITERALS.split(' ').join('|') + ')\\b', + begin: '\\b(' + LITERALS.split(' ').join('|') + ')\\b' }, - /*{ + { + // Do not format unclassified values. Needed to exclude highlighting of values as built_in. + begin: /("[^"]*"|[^\s{}[\]]+)/ + } + /* + { // IPv4 addresses and subnets className: 'number', variants: [ @@ -122,49 +122,44 @@ export default function(hljs) { {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: /\*[0-9a-fA-F]+/ + }, { - // command followed by space, `|`, `(`, `[`, `]`, or `|` begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s[(\\]|])', returnBegin: true, contains: [ { - className: 'builtin-name', //'function', - begin: /\w+/, - }, - ], + className: 'builtin-name', // 'function', + begin: /\w+/ + } + ] }, - { className: 'built_in', variants: [ - {begin: '(\\.\\./|/|\\s)((' + OBJECTS.split(' ').join('|') + ');?\\s)+',relevance: 10,}, - {begin: /\.\./,}, - ], - },//*/ + { + begin: '(\\.\\./|/|\\s)((' + OBJECTS.split(' ').join('|') + ');?\\s)+' + }, + { + begin: /\.\./, + relevance: 0 + } + ] + } ] }; } - - - -