From fb3e15f004167152dae4dae551077be4c1be2444 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 3 Mar 2021 19:13:50 +0300 Subject: [PATCH 01/25] Add Nevod language regexp patterns. --- components/prism-nevod.js | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 components/prism-nevod.js diff --git a/components/prism-nevod.js b/components/prism-nevod.js new file mode 100644 index 0000000000..c4547b53ae --- /dev/null +++ b/components/prism-nevod.js @@ -0,0 +1,60 @@ +Prism.languages.nevod = { + 'comment': /(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/, + 'string': { + pattern: /("|')[\s\S]*?\1!?\*?/, + greedy: true, + inside: { + modifiers: /!?\*?$/, + }, + }, + 'namespace': { + pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, + inside: { + keyword: /@namespace\b/, + name: /\s+[a-zA-Z0-9\-.]*/, + colon: /:$/, + }, + }, + 'pattern': { + pattern: /(?:#?[a-zA-Z0-9\-.]+)\s*(?:[({]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)}])?\s*=/, + inside: { + name: /^#?[a-zA-Z0-9\-.]+/, + equal: /=/, + attributes: { + pattern: /\(.*\)/, + inside: { + 'attr-name': /[a-zA-Z0-9\-.]+/, + 'attr-hidden-mark': /~/, + 'attr-punctuation': /[,]/, + 'attr-bracket': /[()]/, + }, + }, + }, + }, + 'search': /#[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, + 'keyword': /@(require|inside|outside|having|search|pattern|where)\b/, + 'basic-reference': { + pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, + inside: { + name: /Word|Punct|Symbol|Space|LineBreak|Start|End/, + params: /\(.*\)/, + }, + }, + 'quantifier': /\b\d+(\+|-\d+)?\b/, + 'conjunction': /&/, + 'exception': /~/, + 'optionality': /\?/, + 'bracket': /[()]/, + 'square-bracket': /[[\]]/, + 'curly-bracket': /[{}]/, + 'semi-colon': /;/, + 'attr-capture': { + pattern: /[a-zA-Z0-9\-.]+\s*:/, + inside: { + 'attr-name': /[a-zA-Z0-9\-.]+/, + colon: /:/, + }, + }, + 'punctuation': /[,+_]|\.{2,3}/, + 'pattern-reference': /\S+/ +} From 273e5c9c2352c2e1481d61848c891646c8eb91b4 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Thu, 4 Mar 2021 15:03:12 +0300 Subject: [PATCH 02/25] Update regexp patterns and add language description. --- components/prism-nevod.js | 2 +- examples/prism-nevod.html | 53 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 examples/prism-nevod.html diff --git a/components/prism-nevod.js b/components/prism-nevod.js index c4547b53ae..ad082b8f2c 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -7,6 +7,7 @@ Prism.languages.nevod = { modifiers: /!?\*?$/, }, }, + 'keyword': /@(require|inside|outside|having|search|pattern|where)\b/, 'namespace': { pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, inside: { @@ -32,7 +33,6 @@ Prism.languages.nevod = { }, }, 'search': /#[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, - 'keyword': /@(require|inside|outside|having|search|pattern|where)\b/, 'basic-reference': { pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, inside: { diff --git a/examples/prism-nevod.html b/examples/prism-nevod.html new file mode 100644 index 0000000000..b6b6f7f07e --- /dev/null +++ b/examples/prism-nevod.html @@ -0,0 +1,53 @@ +

Comment

+
/* This is 
+multi-line 
+comment */
+// This is single-line comment
+ +

Keyword

+
@require
+@namespace
+@pattern
+@search
+@inside
+@outside
+@having
+@where
+ +

String

+
"text in double quotes"
+'text in single quotes'
+'case-sensitive text'!
+'text ''Nevod'' in quotes'
+"text ""Nevod"" in double quotes"
+'text prefix'*
+'case-sensitive text prefix'!*
+ +

Namespace

+
@namespace My { }
+@namespace My.Domain { }
+ +

Full Example

+
@namespace Common
+{
+  @search @pattern Url(Domain, Path, Query, Anchor) =
+    Method + Domain:Url.Domain + ?Port + ?Path:Url.Path +
+    ?Query:Url.Query + ?Anchor:Url.Anchor
+  @where
+  {
+    Method = {'http', 'https' , 'ftp', 'mailto', 'file', 'data', 'irc'} + '://';
+    Domain = Word + [1+ '.' + Word + [0+ {Word, '_', '-'}]];
+    Port = ':' + Num;
+    Path = ?'/' + [0+ {Word, '/', '_', '+', '-', '%', '.'}];
+	Query = '?' + ?(Param + [0+ '&' + Param])
+    @where
+    {
+      Param = Identifier + '=' + Identifier
+      @where
+      {
+        Identifier = {Alpha, AlphaNum, '_'} + [0+ {Word, '_'}];
+      };
+    };
+    Anchor(Value) = '#' + Value:{Word};
+  };
+}
From c448cae8ae51f02c731cf87f95d8942525035da8 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Thu, 4 Mar 2021 20:42:32 +0300 Subject: [PATCH 03/25] Update Nevod language patterns. --- components/prism-nevod.js | 86 ++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 38 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index ad082b8f2c..300b42280d 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -1,44 +1,54 @@ Prism.languages.nevod = { 'comment': /(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/, 'string': { - pattern: /("|')[\s\S]*?\1!?\*?/, - greedy: true, - inside: { - modifiers: /!?\*?$/, - }, + pattern: /("|')[\s\S]*?\1!?\*?/, + greedy: true, + inside: { + 'modifiers': /!?\*?$/, + }, }, - 'keyword': /@(require|inside|outside|having|search|pattern|where)\b/, + 'keyword': /@(inside|outside|having|search|where)\b/, + 'require': /@require\b/, 'namespace': { - pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, - inside: { - keyword: /@namespace\b/, - name: /\s+[a-zA-Z0-9\-.]*/, - colon: /:$/, - }, + pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, + inside: { + 'keyword': /@namespace\b/, + 'name': /\b[a-zA-Z0-9\-.]+/ + }, }, 'pattern': { - pattern: /(?:#?[a-zA-Z0-9\-.]+)\s*(?:[({]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)}])?\s*=/, - inside: { - name: /^#?[a-zA-Z0-9\-.]+/, - equal: /=/, - attributes: { - pattern: /\(.*\)/, - inside: { - 'attr-name': /[a-zA-Z0-9\-.]+/, - 'attr-hidden-mark': /~/, - 'attr-punctuation': /[,]/, - 'attr-bracket': /[()]/, - }, - }, + pattern: /(@pattern\s+)?(?:#?[a-zA-Z0-9\-.]+)\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])?\s*=/, + inside: { + 'keyword': /@pattern\b/, + 'name': { + pattern: /^(\s+)?#?[a-zA-Z0-9\-.]+/, + lookbehind: true + }, + 'equal': /=/, + 'attributes': { + pattern: /\(.*\)/, + inside: { + 'attr-name': /[a-zA-Z0-9\-.]+/, + 'attr-hidden-mark': /~/, + 'attr-punctuation': /[,]/, + 'attr-bracket': /[()]/, + }, }, + }, + }, + 'search': { + pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, + inside: { + 'keyword': /@search\b/, + 'name': /#?.*(?=;)/ + } }, - 'search': /#[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, 'basic-reference': { - pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, - inside: { - name: /Word|Punct|Symbol|Space|LineBreak|Start|End/, - params: /\(.*\)/, - }, + pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, + inside: { + name: /.+(?=[(\b])/, + params: /\(.*\)/, + }, }, 'quantifier': /\b\d+(\+|-\d+)?\b/, 'conjunction': /&/, @@ -49,12 +59,12 @@ Prism.languages.nevod = { 'curly-bracket': /[{}]/, 'semi-colon': /;/, 'attr-capture': { - pattern: /[a-zA-Z0-9\-.]+\s*:/, - inside: { - 'attr-name': /[a-zA-Z0-9\-.]+/, - colon: /:/, - }, + pattern: /[a-zA-Z0-9\-.]+\s*:/, + inside: { + 'attr-name': /[a-zA-Z0-9\-.]+/, + colon: /:/, + }, }, 'punctuation': /[,+_]|\.{2,3}/, - 'pattern-reference': /\S+/ -} + 'name': /\S+/ + } From ee9bedb25026638b7193822a3a08de6b21abd34d Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Fri, 5 Mar 2021 00:01:10 +0300 Subject: [PATCH 04/25] square-bracket -> repetition, curly-bracket -> variation. --- components/prism-nevod.js | 90 +++++++++++++++++++-------------------- examples/prism-nevod.html | 34 +++++++++------ 2 files changed, 65 insertions(+), 59 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 300b42280d..0377839a84 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -1,70 +1,70 @@ Prism.languages.nevod = { 'comment': /(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/, 'string': { - pattern: /("|')[\s\S]*?\1!?\*?/, - greedy: true, - inside: { - 'modifiers': /!?\*?$/, - }, + pattern: /("|')[\s\S]*?\1!?\*?/, + greedy: true, + inside: { + 'modifiers': /!?\*?$/, + }, }, 'keyword': /@(inside|outside|having|search|where)\b/, 'require': /@require\b/, 'namespace': { - pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, - inside: { - 'keyword': /@namespace\b/, - 'name': /\b[a-zA-Z0-9\-.]+/ - }, + pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, + inside: { + 'keyword': /@namespace\b/, + 'name': /\b[a-zA-Z0-9\-.]+/ + }, }, 'pattern': { - pattern: /(@pattern\s+)?(?:#?[a-zA-Z0-9\-.]+)\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])?\s*=/, - inside: { - 'keyword': /@pattern\b/, - 'name': { - pattern: /^(\s+)?#?[a-zA-Z0-9\-.]+/, - lookbehind: true - }, - 'equal': /=/, - 'attributes': { - pattern: /\(.*\)/, - inside: { - 'attr-name': /[a-zA-Z0-9\-.]+/, - 'attr-hidden-mark': /~/, - 'attr-punctuation': /[,]/, - 'attr-bracket': /[()]/, - }, + pattern: /(@pattern\s+)?(?:#?[a-zA-Z0-9\-.]+)\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])?\s*=/, + inside: { + 'keyword': /@pattern\b/, + 'name': { + pattern: /^(\s+)?#?[a-zA-Z0-9\-.]+/, + lookbehind: true + }, + 'equal': /=/, + 'attributes': { + pattern: /\(.*\)/, + inside: { + 'attr-name': /[a-zA-Z0-9\-.]+/, + 'attr-hidden-mark': /~/, + 'attr-punctuation': /[,]/, + 'attr-bracket': /[()]/, + }, + }, }, - }, }, 'search': { - pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, - inside: { - 'keyword': /@search\b/, - 'name': /#?.*(?=;)/ - } + pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, + inside: { + 'keyword': /@search\b/, + 'name': /#?.*(?=;)/ + } }, 'basic-reference': { - pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, - inside: { - name: /.+(?=[(\b])/, - params: /\(.*\)/, - }, + pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, + inside: { + 'name': /.+(?=[(\b])/, + 'params': /\(.*\)/, + }, }, 'quantifier': /\b\d+(\+|-\d+)?\b/, 'conjunction': /&/, 'exception': /~/, 'optionality': /\?/, 'bracket': /[()]/, - 'square-bracket': /[[\]]/, - 'curly-bracket': /[{}]/, + 'repetition': /[[\]]/, + 'variation': /[{}]/, 'semi-colon': /;/, 'attr-capture': { - pattern: /[a-zA-Z0-9\-.]+\s*:/, - inside: { - 'attr-name': /[a-zA-Z0-9\-.]+/, - colon: /:/, - }, + pattern: /[a-zA-Z0-9\-.]+\s*:/, + inside: { + 'attr-name': /[a-zA-Z0-9\-.]+/, + 'colon': /:/, + }, }, 'punctuation': /[,+_]|\.{2,3}/, 'name': /\S+/ - } +} diff --git a/examples/prism-nevod.html b/examples/prism-nevod.html index b6b6f7f07e..a9d4cf1a5f 100644 --- a/examples/prism-nevod.html +++ b/examples/prism-nevod.html @@ -1,19 +1,9 @@

Comment

-
/* This is 
-multi-line 
+
/* This is
+multi-line
 comment */
 // This is single-line comment
-

Keyword

-
@require
-@namespace
-@pattern
-@search
-@inside
-@outside
-@having
-@where
-

String

"text in double quotes"
 'text in single quotes'
@@ -23,10 +13,26 @@ 

String

'text prefix'* 'case-sensitive text prefix'!*
+

Keyword

+
@inside
+@outside
+@having
+@search
+@where
+ +

Package Import

+
@require "Common/DateTime.np"
+@require "Common/Url.np"
+

Namespace

@namespace My { }
 @namespace My.Domain { }
+

Pattern

+
@pattern #Percentage = Num + ?Space + {'%', 'pct.', 'pct', 'percent'};
+@pattern #GUID = Word(8) + [3 '-' + Word(4)] + '-' + Word(12);
+@pattern #HashTag = '#' + {AlphaNum, Alpha, '_'} + [0+ {Word, '_'}];
+

Full Example

@namespace Common
 {
@@ -39,7 +45,7 @@ 

Full Example

Domain = Word + [1+ '.' + Word + [0+ {Word, '_', '-'}]]; Port = ':' + Num; Path = ?'/' + [0+ {Word, '/', '_', '+', '-', '%', '.'}]; - Query = '?' + ?(Param + [0+ '&' + Param]) + Query = '?' + ?(Param + [0+ '&' + Param]) @where { Param = Identifier + '=' + Identifier @@ -50,4 +56,4 @@

Full Example

}; Anchor(Value) = '#' + Value:{Word}; }; -}
+}
\ No newline at end of file From 62f3e6947ef6eea93d48350f76bdefc8256e6013 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Fri, 5 Mar 2021 10:34:45 +0300 Subject: [PATCH 05/25] Add tests for Nevod language. --- tests/languages/nevod/comment_feature.test | 20 ++++++++++++++ tests/languages/nevod/keyword_feature.test | 13 +++++++++ tests/languages/nevod/operator_feature.test | 29 +++++++++++++++++++++ tests/languages/nevod/string_feature.test | 27 +++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 tests/languages/nevod/comment_feature.test create mode 100644 tests/languages/nevod/keyword_feature.test create mode 100644 tests/languages/nevod/operator_feature.test create mode 100644 tests/languages/nevod/string_feature.test diff --git a/tests/languages/nevod/comment_feature.test b/tests/languages/nevod/comment_feature.test new file mode 100644 index 0000000000..95e8ccf8bd --- /dev/null +++ b/tests/languages/nevod/comment_feature.test @@ -0,0 +1,20 @@ +/* Comment */ +/* Multi-line +comment */ +/**/ +// +// Single-line comment + +---------------------------------------------------- + +[ + ["comment", "/* Comment */"], + ["comment", "/* Multi-line\r\ncomment */"], + ["comment", "/**/"], + ["comment", "//"], + ["comment", "// Single-line comment"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/tests/languages/nevod/keyword_feature.test b/tests/languages/nevod/keyword_feature.test new file mode 100644 index 0000000000..cf6951c279 --- /dev/null +++ b/tests/languages/nevod/keyword_feature.test @@ -0,0 +1,13 @@ +@inside @outside @having +@search @where + +---------------------------------------------------- + +[ + ["keyword", "@inside"], ["keyword", "@outside"], ["keyword", "@having"], + ["keyword", "@search"], ["keyword", "@where"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/tests/languages/nevod/operator_feature.test b/tests/languages/nevod/operator_feature.test new file mode 100644 index 0000000000..5b1e08ab49 --- /dev/null +++ b/tests/languages/nevod/operator_feature.test @@ -0,0 +1,29 @@ +, + _ +.. ... +0-5 +& +~ +? +() +[] +{} +; + +---------------------------------------------------- + +[ + ["punctuation", ","], ["punctuation", "+"], ["punctuation", "_"], + ["punctuation", ".."], ["punctuation", "..."], + ["quantifier", "0-5"], + ["conjunction", "&"], + ["exception", "~"], + ["optionality", "?"], + ["bracket", "()"], + ["repetition", "[]"], + ["variation", "{}"], + ["semi-colon", ";"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test new file mode 100644 index 0000000000..d9bfba2279 --- /dev/null +++ b/tests/languages/nevod/string_feature.test @@ -0,0 +1,27 @@ +"text in double quotes" +"" +'text in single quotes' +'case-sensitive text'! +'text ''Nevod'' in quotes' +"text ""Nevod"" in double quotes" +'text prefix'* +'case-sensitive text prefix'!* +'' + +---------------------------------------------------- + +[ + ["string", "\"text in double quotes\""], + ["string", "\"\""], + ["string", "'text in single quotes'"], + ["string", "'case-sensitive text'!"], + ["string", "'text ''Nevod'' in quotes'"], + ["string", "\"text \"\"Nevod\"\" in double quotes\""], + ["string", "'text prefix'*"], + ["string", "'case-sensitive text prefix'!*"], + ["string", "''"], +] + +---------------------------------------------------- + +Checks for strings and chars. \ No newline at end of file From 516076e090d47608d30537552454c09cf26bc578 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 15:08:40 +0300 Subject: [PATCH 06/25] prism-nevod.min.js generated by build. --- components/prism-nevod.min.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 components/prism-nevod.min.js diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js new file mode 100644 index 0000000000..aa1d79a4a1 --- /dev/null +++ b/components/prism-nevod.min.js @@ -0,0 +1 @@ +Prism.languages.nevod={comment:/(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/("|')[\s\S]*?\1!?\*?/,greedy:!0,inside:{modifiers:/!?\*?$/}},keyword:/@(inside|outside|having|search|where)\b/,require:/@require\b/,namespace:{pattern:/@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/,inside:{keyword:/@namespace\b/,name:/\b[a-zA-Z0-9\-.]+/}},pattern:{pattern:/(@pattern\s+)?(?:#?[a-zA-Z0-9\-.]+)\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])?\s*=/,inside:{keyword:/@pattern\b/,name:{pattern:/^(\s+)?#?[a-zA-Z0-9\-.]+/,lookbehind:!0},equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/,inside:{keyword:/@search\b/,name:/#?.*(?=;)/}},"basic-reference":{pattern:/\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/,inside:{name:/.+(?=[(\b])/,params:/\(.*\)/}},quantifier:/\b\d+(\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file From 0ac30f223f8f1d398988586798db4d6c09c7d80f Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 16:00:41 +0300 Subject: [PATCH 07/25] Minor fix of test description. --- tests/languages/nevod/string_feature.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test index d9bfba2279..74873bcdd4 100644 --- a/tests/languages/nevod/string_feature.test +++ b/tests/languages/nevod/string_feature.test @@ -24,4 +24,4 @@ ---------------------------------------------------- -Checks for strings and chars. \ No newline at end of file +Checks for various text strings. \ No newline at end of file From 7273883c6b027802c635ae94065b9e1fb7dc7b6f Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 16:08:06 +0300 Subject: [PATCH 08/25] Add nevod to components.json. --- components.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components.json b/components.json index 70270401d9..bf655d3d3b 100644 --- a/components.json +++ b/components.json @@ -807,6 +807,10 @@ "title": "NEON", "owner": "nette" }, + "nevod": { + "title": "Nevod", + "owner": "nezaboodka" + }, "nginx": { "title": "nginx", "owner": "volado" From 801790eaa0ab9a21fa214e8c8a9a06b3788410d5 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 16:27:44 +0300 Subject: [PATCH 09/25] Fix operator_feature.test for nevod language. --- tests/languages/nevod/operator_feature.test | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/languages/nevod/operator_feature.test b/tests/languages/nevod/operator_feature.test index 5b1e08ab49..50c73227ef 100644 --- a/tests/languages/nevod/operator_feature.test +++ b/tests/languages/nevod/operator_feature.test @@ -18,9 +18,12 @@ ["conjunction", "&"], ["exception", "~"], ["optionality", "?"], - ["bracket", "()"], - ["repetition", "[]"], - ["variation", "{}"], + ["bracket", "("], + ["bracket", ")"], + ["repetition", "["], + ["repetition", "]"], + ["variation", "{"], + ["variation", "}"], ["semi-colon", ";"] ] From 6f92e25d971411ce8e38090b8c4deca8430b5c20 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 16:38:54 +0300 Subject: [PATCH 10/25] WIP: fixing string_feature.test for nevod language. --- tests/languages/nevod/string_feature.test | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test index 74873bcdd4..7c8e190a2d 100644 --- a/tests/languages/nevod/string_feature.test +++ b/tests/languages/nevod/string_feature.test @@ -11,15 +11,15 @@ ---------------------------------------------------- [ - ["string", "\"text in double quotes\""], - ["string", "\"\""], - ["string", "'text in single quotes'"], - ["string", "'case-sensitive text'!"], - ["string", "'text ''Nevod'' in quotes'"], - ["string", "\"text \"\"Nevod\"\" in double quotes\""], - ["string", "'text prefix'*"], - ["string", "'case-sensitive text prefix'!*"], - ["string", "''"], + ["string", ["\"text in double quotes\"", ["modifiers", ""]]], + ["string", "\"\""], ["modifiers", ""], + ["string", "'text in single quotes'"], ["modifiers", ""], + ["string", "'case-sensitive text'!"], ["modifiers", "!"], + ["string", "'text ''Nevod'' in quotes'"], ["modifiers", ""], + ["string", "\"text \"\"Nevod\"\" in double quotes\""], ["modifiers", ""], + ["string", "'text prefix'*"], ["modifiers", "*"], + ["string", "'case-sensitive text prefix'!*"], ["modifiers", "!*"], + ["string", "''"], ["modifiers", ""] ] ---------------------------------------------------- From d325380bbf8d19a1bc155c4bb8423714388417a4 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 22:56:34 +0300 Subject: [PATCH 11/25] Fix string_feature.test for nevod language. --- tests/languages/nevod/string_feature.test | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test index 7c8e190a2d..a5f8fbc371 100644 --- a/tests/languages/nevod/string_feature.test +++ b/tests/languages/nevod/string_feature.test @@ -12,14 +12,14 @@ [ ["string", ["\"text in double quotes\"", ["modifiers", ""]]], - ["string", "\"\""], ["modifiers", ""], - ["string", "'text in single quotes'"], ["modifiers", ""], - ["string", "'case-sensitive text'!"], ["modifiers", "!"], - ["string", "'text ''Nevod'' in quotes'"], ["modifiers", ""], - ["string", "\"text \"\"Nevod\"\" in double quotes\""], ["modifiers", ""], - ["string", "'text prefix'*"], ["modifiers", "*"], - ["string", "'case-sensitive text prefix'!*"], ["modifiers", "!*"], - ["string", "''"], ["modifiers", ""] + ["string", ["\"\"", ["modifiers", ""]]], + ["string", ["'text in single quotes'", ["modifiers", ""]]], + ["string", ["'case-sensitive text'!", ["modifiers", "!"]]], + ["string", ["'text ''Nevod'' in quotes'", ["modifiers", ""]]], + ["string", ["\"text \"\"Nevod\"\" in double quotes\"", ["modifiers", ""]]], + ["string", ["'text prefix'*", ["modifiers", "*"]]], + ["string", ["'case-sensitive text prefix'!*", ["modifiers", "!*"]]], + ["string", ["''", ["modifiers", ""]]] ] ---------------------------------------------------- From 3b401b987f2bed0cb34cae34db0bb81e68b4cfed Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Tue, 9 Mar 2021 23:25:24 +0300 Subject: [PATCH 12/25] WIP: fixing string_feature test for nevod language. --- tests/languages/nevod/string_feature.test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test index a5f8fbc371..7e48975dd1 100644 --- a/tests/languages/nevod/string_feature.test +++ b/tests/languages/nevod/string_feature.test @@ -14,11 +14,11 @@ ["string", ["\"text in double quotes\"", ["modifiers", ""]]], ["string", ["\"\"", ["modifiers", ""]]], ["string", ["'text in single quotes'", ["modifiers", ""]]], - ["string", ["'case-sensitive text'!", ["modifiers", "!"]]], + ["string", ["'case-sensitive text'", ["modifiers", "!"]]], ["string", ["'text ''Nevod'' in quotes'", ["modifiers", ""]]], ["string", ["\"text \"\"Nevod\"\" in double quotes\"", ["modifiers", ""]]], - ["string", ["'text prefix'*", ["modifiers", "*"]]], - ["string", ["'case-sensitive text prefix'!*", ["modifiers", "!*"]]], + ["string", ["'text prefix'", ["modifiers", "*"]]], + ["string", ["'case-sensitive text prefix'", ["modifiers", "!*"]]], ["string", ["''", ["modifiers", ""]]] ] From 7298483087a08129aeabfd7c8e9128064eb40b86 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 10 Mar 2021 15:42:47 +0300 Subject: [PATCH 13/25] Fix Nevod patterns and tests. --- components/prism-nevod.js | 33 ++++++++++++++--------- components/prism-nevod.min.js | 2 +- tests/identifier-test.js | 6 +++++ tests/languages/nevod/string_feature.test | 12 ++++----- 4 files changed, 34 insertions(+), 19 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 0377839a84..6158d89ac6 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -1,23 +1,32 @@ Prism.languages.nevod = { 'comment': /(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/, - 'string': { - pattern: /("|')[\s\S]*?\1!?\*?/, - greedy: true, - inside: { - 'modifiers': /!?\*?$/, + 'string': [ + { + pattern: /"(?:""|[^"])*"(?!")!?\*?/, + greedy: true, + inside: { + 'modifiers': /!$|!\*$|\*$/, + }, }, - }, - 'keyword': /@(inside|outside|having|search|where)\b/, + { + pattern: /'(?:''|[^'])*'(?!')!?\*?/, + greedy: true, + inside: { + 'modifiers': /!$|!\*$|\*$/, + }, + } + ], + 'keyword': /@(?:inside|outside|having|search|where)\b/, 'require': /@require\b/, 'namespace': { - pattern: /@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/, + pattern: /@namespace\s+[a-zA-Z0-9\-.]+\s*{/, inside: { 'keyword': /@namespace\b/, 'name': /\b[a-zA-Z0-9\-.]+/ }, }, 'pattern': { - pattern: /(@pattern\s+)?(?:#?[a-zA-Z0-9\-.]+)\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])?\s*=/, + pattern: /(?:@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/, inside: { 'keyword': /@pattern\b/, 'name': { @@ -37,20 +46,20 @@ Prism.languages.nevod = { }, }, 'search': { - pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/, + pattern: /(?:@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/, inside: { 'keyword': /@search\b/, 'name': /#?.*(?=;)/ } }, 'basic-reference': { - pattern: /\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/, + pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/, inside: { 'name': /.+(?=[(\b])/, 'params': /\(.*\)/, }, }, - 'quantifier': /\b\d+(\+|-\d+)?\b/, + 'quantifier': /\b\d+(?:\+|-\d+)?\b/, 'conjunction': /&/, 'exception': /~/, 'optionality': /\?/, diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index aa1d79a4a1..4154d59140 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/("|')[\s\S]*?\1!?\*?/,greedy:!0,inside:{modifiers:/!?\*?$/}},keyword:/@(inside|outside|having|search|where)\b/,require:/@require\b/,namespace:{pattern:/@namespace(\s+[a-zA-Z0-9\-.]*)?\s*{/,inside:{keyword:/@namespace\b/,name:/\b[a-zA-Z0-9\-.]+/}},pattern:{pattern:/(@pattern\s+)?(?:#?[a-zA-Z0-9\-.]+)\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])?\s*=/,inside:{keyword:/@pattern\b/,name:{pattern:/^(\s+)?#?[a-zA-Z0-9\-.]+/,lookbehind:!0},equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(\.\*)?\s*(?=;)/,inside:{keyword:/@search\b/,name:/#?.*(?=;)/}},"basic-reference":{pattern:/\b(Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(\(.*\)|\b)/,inside:{name:/.+(?=[(\b])/,params:/\(.*\)/}},quantifier:/\b\d+(\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file +Prism.languages.nevod={comment:/(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:[{pattern:/"(?:""|[^"])*"(?!")!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},{pattern:/'(?:''|[^'])*'(?!')!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}}],keyword:/@(?:inside|outside|having|search|where)\b/,require:/@require\b/,namespace:{pattern:/@namespace\s+[a-zA-Z0-9\-.]+\s*{/,inside:{keyword:/@namespace\b/,name:/\b[a-zA-Z0-9\-.]+/}},pattern:{pattern:/(?:@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,inside:{keyword:/@pattern\b/,name:{pattern:/^(\s+)?#?[a-zA-Z0-9\-.]+/,lookbehind:!0},equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(?:@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,inside:{keyword:/@search\b/,name:/#?.*(?=;)/}},"basic-reference":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+(?=[(\b])/,params:/\(.*\)/}},quantifier:/\b\d+(?:\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file diff --git a/tests/identifier-test.js b/tests/identifier-test.js index 8f288780b1..680f0aac70 100644 --- a/tests/identifier-test.js +++ b/tests/identifier-test.js @@ -46,6 +46,12 @@ const testOptions = { number: false, template: false, }, + + // Nevod uses underscore symbol as operator and allows hyphen to be part of identifier + 'nevod': { + word: false, + template: false, + }, }; /** @type {Record} */ diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test index 7e48975dd1..0d566df523 100644 --- a/tests/languages/nevod/string_feature.test +++ b/tests/languages/nevod/string_feature.test @@ -11,15 +11,15 @@ ---------------------------------------------------- [ - ["string", ["\"text in double quotes\"", ["modifiers", ""]]], - ["string", ["\"\"", ["modifiers", ""]]], - ["string", ["'text in single quotes'", ["modifiers", ""]]], + ["string", ["\"text in double quotes\""]], + ["string", ["\"\""]], + ["string", ["'text in single quotes'"]], ["string", ["'case-sensitive text'", ["modifiers", "!"]]], - ["string", ["'text ''Nevod'' in quotes'", ["modifiers", ""]]], - ["string", ["\"text \"\"Nevod\"\" in double quotes\"", ["modifiers", ""]]], + ["string", ["'text ''Nevod'' in quotes'"]], + ["string", ["\"text \"\"Nevod\"\" in double quotes\""]], ["string", ["'text prefix'", ["modifiers", "*"]]], ["string", ["'case-sensitive text prefix'", ["modifiers", "!*"]]], - ["string", ["''", ["modifiers", ""]]] + ["string", ["''"]] ] ---------------------------------------------------- From 0b01d4c86309d891a7007976cb07176f9c776e09 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 10 Mar 2021 16:24:46 +0300 Subject: [PATCH 14/25] Fix components.js. --- components.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components.js b/components.js index e2896d3a60..abf1e97f08 100644 --- a/components.js +++ b/components.js @@ -1,2 +1,2 @@ -var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml","ssml","atom","rss"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","ssml":"SSML","atom":"Atom","rss":"RSS"},"option":"default"},"css":{"title":"CSS","option":"default","modify":"markup"},"clike":{"title":"C-like","option":"default"},"javascript":{"title":"JavaScript","require":"clike","modify":"markup","optional":"regex","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"ABNF","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","modify":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"agda":{"title":"Agda","owner":"xy-ren"},"al":{"title":"AL","owner":"RunDevelopment"},"antlr4":{"title":"ANTLR4","alias":"g4","owner":"RunDevelopment"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apex":{"title":"Apex","require":["clike","sql"],"owner":"RunDevelopment"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"aql":{"title":"AQL","owner":"RunDevelopment"},"arduino":{"title":"Arduino","require":"cpp","owner":"dkern"},"arff":{"title":"ARFF","owner":"Golmote"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"bash":{"title":"Bash","alias":"shell","aliasTitles":{"shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bbcode":{"title":"BBcode","alias":"shortcode","aliasTitles":{"shortcode":"Shortcode"},"owner":"RunDevelopment"},"birb":{"title":"Birb","require":"clike","owner":"Calamity210"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"BNF","alias":"rbnf","aliasTitles":{"rbnf":"RBNF"},"owner":"RunDevelopment"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"brightscript":{"title":"BrightScript","owner":"RunDevelopment"},"bro":{"title":"Bro","owner":"wayward710"},"bsl":{"title":"BSL (1C:Enterprise)","alias":"oscript","aliasTitles":{"oscript":"OneScript"},"owner":"Diversus23"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":["cs","dotnet"],"owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cfscript":{"title":"CFScript","require":"clike","alias":"cfc","owner":"mjclemente"},"chaiscript":{"title":"ChaiScript","require":["clike","cpp"],"owner":"RunDevelopment"},"cil":{"title":"CIL","owner":"sbrl"},"clojure":{"title":"Clojure","owner":"troglotit"},"cmake":{"title":"CMake","owner":"mjrogozinski"},"coffeescript":{"title":"CoffeeScript","require":"javascript","alias":"coffee","owner":"R-osey"},"concurnas":{"title":"Concurnas","alias":"conc","owner":"jasontatton"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"css-extras":{"title":"CSS Extras","require":"css","modify":"css","owner":"milesj"},"cypher":{"title":"Cypher","owner":"RunDevelopment"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"dataweave":{"title":"DataWeave","owner":"machaval"},"dax":{"title":"DAX","owner":"peterbud"},"dhall":{"title":"Dhall","owner":"RunDevelopment"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup-templating","alias":"jinja2","owner":"romanvm"},"dns-zone-file":{"title":"DNS zone file","owner":"RunDevelopment","alias":"dns-zone"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"dot":{"title":"DOT (Graphviz)","alias":"gv","optional":"markup","owner":"RunDevelopment"},"ebnf":{"title":"EBNF","owner":"RunDevelopment"},"editorconfig":{"title":"EditorConfig","owner":"osipxd"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"ejs":{"title":"EJS","require":["javascript","markup-templating"],"owner":"RunDevelopment","alias":"eta","aliasTitles":{"eta":"Eta"}},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"etlua":{"title":"Embedded Lua templating","require":["lua","markup-templating"],"owner":"RunDevelopment"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"excel-formula":{"title":"Excel Formula","alias":["xlsx","xls"],"owner":"RunDevelopment"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"factor":{"title":"Factor","owner":"catb0t"},"false":{"title":"False","owner":"edukisto"},"firestore-security-rules":{"title":"Firestore security rules","require":"clike","owner":"RunDevelopment"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"ftl":{"title":"FreeMarker Template Language","require":"markup-templating","owner":"RunDevelopment"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gdscript":{"title":"GDScript","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"c","owner":"Golmote"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"graphql":{"title":"GraphQL","optional":"markdown","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","optional":["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","owner":"Golmote"},"haskell":{"title":"Haskell","alias":"hs","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"hlsl":{"title":"HLSL","require":"c","owner":"RunDevelopment"},"http":{"title":"HTTP","optional":["css","javascript","json","markup","uri"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"icu-message-format":{"title":"ICU Message Format","owner":"RunDevelopment"},"idris":{"title":"Idris","alias":"idr","owner":"KeenS","require":"haskell"},"ignore":{"title":".ignore","owner":"osipxd","alias":["gitignore","hgignore","npmignore"],"aliasTitles":{"gitignore":".gitignore","hgignore":".hgignore","npmignore":".npmignore"}},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"modify":"java","optional":"scala","owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","modify":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jq":{"title":"JQ","owner":"RunDevelopment"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike","typescript"],"modify":"javascript","optional":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","modify":"javascript","optional":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"webmanifest","aliasTitles":{"webmanifest":"Web App Manifest"},"owner":"CupOfTea696"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"jsstacktrace":{"title":"JS stack trace","owner":"sbrl"},"js-templates":{"title":"JS Templates","require":"javascript","modify":"javascript","optional":["css","css-extras","graphql","markdown","markup"],"owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","alias":["kt","kts"],"aliasTitles":{"kts":"Kotlin Script"},"require":"clike","owner":"Golmote"},"kumir":{"title":"KuMir (КуМир)","alias":"kum","owner":"edukisto"},"latex":{"title":"LaTeX","alias":["tex","context"],"aliasTitles":{"tex":"TeX","context":"ConTeXt"},"owner":"japborst"},"latte":{"title":"Latte","require":["clike","markup-templating","php"],"owner":"nette"},"less":{"title":"Less","require":"css","optional":"css-extras","owner":"Golmote"},"lilypond":{"title":"LilyPond","require":"scheme","alias":"ly","owner":"RunDevelopment"},"liquid":{"title":"Liquid","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"llvm":{"title":"LLVM IR","owner":"porglezomp"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","optional":"yaml","alias":"md","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"matlab":{"title":"MATLAB","owner":"Golmote"},"mel":{"title":"MEL","owner":"Golmote"},"mizar":{"title":"Mizar","owner":"Golmote"},"mongodb":{"title":"MongoDB","owner":"airs0urce","require":"javascript"},"monkey":{"title":"Monkey","owner":"Golmote"},"moonscript":{"title":"MoonScript","alias":"moon","owner":"RunDevelopment"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","optional":"jsdoc","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"naniscript":{"title":"Naninovel Script","owner":"Elringus","alias":"nani"},"nasm":{"title":"NASM","owner":"rbmj"},"neon":{"title":"NEON","owner":"nette"},"nginx":{"title":"nginx","owner":"volado"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","alias":"objc","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"opencl":{"title":"OpenCL","require":"c","modify":["c","cpp"],"owner":"Milania1"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"pascaligo":{"title":"Pascaligo","owner":"DefinitelyNotAGoat"},"psl":{"title":"PATROL Scripting Language","owner":"bertysentry"},"pcaxis":{"title":"PC-Axis","alias":"px","owner":"RunDevelopment"},"peoplecode":{"title":"PeopleCode","alias":"pcode","owner":"RunDevelopment"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":"markup-templating","owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"modify":"php","owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","modify":"php","owner":"milesj"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powerquery":{"title":"PowerQuery","alias":["pq","mscript"],"owner":"peterbud"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"promql":{"title":"PromQL","owner":"arendjr"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":["markup","javascript"],"optional":["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","optional":["c","cpp","fortran"],"owner":"Golmote"},"purebasic":{"title":"PureBasic","require":"clike","alias":"pbfasm","owner":"HeX0R101"},"purescript":{"title":"PureScript","require":"haskell","alias":"purs","owner":"sriharshachilakapati"},"python":{"title":"Python","alias":"py","owner":"multipetros"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qml":{"title":"QML","require":"javascript","owner":"RunDevelopment"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"racket":{"title":"Racket","require":"scheme","alias":"rkt","owner":"RunDevelopment"},"jsx":{"title":"React JSX","require":["markup","javascript"],"optional":["jsdoc","js-extras","js-templates"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"regex":{"title":"Regex","owner":"RunDevelopment"},"rego":{"title":"Rego","owner":"JordanSh"},"renpy":{"title":"Ren'py","alias":"rpy","owner":"HyuchiaDiego"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"robotframework":{"title":"Robot Framework","alias":"robot","owner":"RunDevelopment"},"ruby":{"title":"Ruby","require":"clike","alias":"rb","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","optional":["groovy","lua","sql"],"owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","owner":"Golmote"},"scss":{"title":"Sass (Scss)","require":"css","optional":"css-extras","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"shell-session":{"title":"Shell session","require":"bash","alias":["sh-session","shellsession"],"owner":"RunDevelopment"},"smali":{"title":"Smali","owner":"RunDevelopment"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","owner":"Golmote"},"sml":{"title":"SML","alias":"smlnj","aliasTitles":{"smlnj":"SML/NJ"},"owner":"RunDevelopment"},"solidity":{"title":"Solidity (Ethereum)","alias":"sol","require":"clike","owner":"glachaud"},"solution-file":{"title":"Solution file","alias":"sln","owner":"RunDevelopment"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"sparql":{"title":"SPARQL","require":"turtle","owner":"Triply-Dev","alias":"rq"},"splunk-spl":{"title":"Splunk SPL","owner":"RunDevelopment"},"sqf":{"title":"SQF: Status Quo Function (Arma 3)","require":"clike","owner":"RunDevelopment"},"sql":{"title":"SQL","owner":"multipetros"},"squirrel":{"title":"Squirrel","require":"clike","owner":"RunDevelopment"},"stan":{"title":"Stan","owner":"RunDevelopment"},"iecst":{"title":"Structured Text (IEC 61131-3)","owner":"serhioromano"},"stylus":{"title":"Stylus","owner":"vkbansal"},"swift":{"title":"Swift","require":"clike","owner":"chrischares"},"t4-templating":{"title":"T4 templating","owner":"RunDevelopment"},"t4-cs":{"title":"T4 Text Templates (C#)","require":["t4-templating","csharp"],"alias":"t4","owner":"RunDevelopment"},"t4-vb":{"title":"T4 Text Templates (VB)","require":["t4-templating","vbnet"],"owner":"RunDevelopment"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"textile":{"title":"Textile","require":"markup","optional":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"turtle":{"title":"Turtle","alias":"trig","aliasTitles":{"trig":"TriG"},"owner":"jakubklimek"},"twig":{"title":"Twig","require":"markup","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","optional":"js-templates","alias":"ts","owner":"vkbansal"},"typoscript":{"title":"TypoScript","alias":"tsconfig","aliasTitles":{"tsconfig":"TSConfig"},"owner":"dkern"},"unrealscript":{"title":"UnrealScript","alias":["uscript","uc"],"owner":"RunDevelopment"},"uri":{"title":"URI","alias":"url","aliasTitles":{"url":"URL"},"owner":"RunDevelopment"},"v":{"title":"V","require":"clike","owner":"taggon"},"vala":{"title":"Vala","require":"clike","optional":"regex","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":["vb","vba"],"aliasTitles":{"vba":"VBA"},"owner":"Golmote"},"warpscript":{"title":"WarpScript","owner":"RunDevelopment"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xml-doc":{"title":"XML doc (.net)","require":"markup","modify":["csharp","fsharp","vbnet"],"owner":"RunDevelopment"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","alias":"yml","owner":"hason"},"yang":{"title":"YANG","owner":"RunDevelopment"},"zig":{"title":"Zig","owner":"RunDevelopment"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":{"title":"Line Highlight","description":"Highlights specific lines and/or line ranges."},"line-numbers":{"title":"Line Numbers","description":"Line number at the beginning of code lines.","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","description":"Show hidden characters such as tabs and line breaks.","optional":["autolinker","data-uri-highlight"]},"autolinker":{"title":"Autolinker","description":"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},"wpd":{"title":"WebPlatform Docs","description":"Makes tokens link to WebPlatform.org documentation. The links open in a new tab."},"custom-class":{"title":"Custom Class","description":"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","description":"Fetch external files and highlight them with Prism. Used on the Prism website itself.","noCSS":true},"show-language":{"title":"Show Language","description":"Display the highlighted language in code blocks (inline code does not show the label).","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","description":"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","description":"Adds special CSS classes for each keyword matched in the code. For example, the keyword if will have the class keyword-if as well. You can have fine grained control over the appearance of each keyword by providing your own CSS rules.","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","description":"Removes the initial line feed in code blocks.","owner":"Golmote","noCSS":true},"inline-color":{"title":"Inline color","description":"Adds a small inline preview for colors in style sheets.","require":"css-extras","owner":"RunDevelopment"},"previewers":{"title":"Previewers","description":"Previewers for angles, colors, gradients, easing and time.","require":"css-extras","owner":"Golmote"},"autoloader":{"title":"Autoloader","description":"Automatically loads the needed languages to highlight the code blocks.","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","description":"Prevents custom markup from being dropped out during highlighting.","owner":"Golmote","optional":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","description":"Display a command line with a prompt and, optionally, the output/response from the commands.","owner":"chriswells0"},"unescaped-markup":{"title":"Unescaped Markup","description":"Write markup without having to escape anything."},"normalize-whitespace":{"title":"Normalize Whitespace","description":"Supports multiple operations to normalize whitespace in code blocks.","owner":"zeitgeist87","optional":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","description":"Highlights data-URI contents.","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","description":"Attach a toolbar for plugins to easily register buttons on the top of a code block.","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","description":"Add a button that copies the code block to the clipboard when clicked.","owner":"mAAdhaTTah","require":"toolbar","noCSS":true},"download-button":{"title":"Download Button","description":"A button in the toolbar of a code block adding a convenient way to download a code file.","owner":"Golmote","require":"toolbar","noCSS":true},"match-braces":{"title":"Match braces","description":"Highlights matching braces.","owner":"RunDevelopment"},"diff-highlight":{"title":"Diff Highlight","description":"Highlights the code inside diff blocks.","owner":"RunDevelopment","require":"diff"},"filter-highlight-all":{"title":"Filter highlightAll","description":"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.","owner":"RunDevelopment","noCSS":true},"treeview":{"title":"Treeview","description":"A language with special styles to highlight file system tree structures.","owner":"Golmote"}}}; +var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml","ssml","atom","rss"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","ssml":"SSML","atom":"Atom","rss":"RSS"},"option":"default"},"css":{"title":"CSS","option":"default","modify":"markup"},"clike":{"title":"C-like","option":"default"},"javascript":{"title":"JavaScript","require":"clike","modify":"markup","optional":"regex","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"ABNF","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","modify":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"agda":{"title":"Agda","owner":"xy-ren"},"al":{"title":"AL","owner":"RunDevelopment"},"antlr4":{"title":"ANTLR4","alias":"g4","owner":"RunDevelopment"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apex":{"title":"Apex","require":["clike","sql"],"owner":"RunDevelopment"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"aql":{"title":"AQL","owner":"RunDevelopment"},"arduino":{"title":"Arduino","require":"cpp","owner":"dkern"},"arff":{"title":"ARFF","owner":"Golmote"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"bash":{"title":"Bash","alias":"shell","aliasTitles":{"shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bbcode":{"title":"BBcode","alias":"shortcode","aliasTitles":{"shortcode":"Shortcode"},"owner":"RunDevelopment"},"birb":{"title":"Birb","require":"clike","owner":"Calamity210"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"BNF","alias":"rbnf","aliasTitles":{"rbnf":"RBNF"},"owner":"RunDevelopment"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"brightscript":{"title":"BrightScript","owner":"RunDevelopment"},"bro":{"title":"Bro","owner":"wayward710"},"bsl":{"title":"BSL (1C:Enterprise)","alias":"oscript","aliasTitles":{"oscript":"OneScript"},"owner":"Diversus23"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":["cs","dotnet"],"owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cfscript":{"title":"CFScript","require":"clike","alias":"cfc","owner":"mjclemente"},"chaiscript":{"title":"ChaiScript","require":["clike","cpp"],"owner":"RunDevelopment"},"cil":{"title":"CIL","owner":"sbrl"},"clojure":{"title":"Clojure","owner":"troglotit"},"cmake":{"title":"CMake","owner":"mjrogozinski"},"coffeescript":{"title":"CoffeeScript","require":"javascript","alias":"coffee","owner":"R-osey"},"concurnas":{"title":"Concurnas","alias":"conc","owner":"jasontatton"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"css-extras":{"title":"CSS Extras","require":"css","modify":"css","owner":"milesj"},"cypher":{"title":"Cypher","owner":"RunDevelopment"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"dataweave":{"title":"DataWeave","owner":"machaval"},"dax":{"title":"DAX","owner":"peterbud"},"dhall":{"title":"Dhall","owner":"RunDevelopment"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup-templating","alias":"jinja2","owner":"romanvm"},"dns-zone-file":{"title":"DNS zone file","owner":"RunDevelopment","alias":"dns-zone"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"dot":{"title":"DOT (Graphviz)","alias":"gv","optional":"markup","owner":"RunDevelopment"},"ebnf":{"title":"EBNF","owner":"RunDevelopment"},"editorconfig":{"title":"EditorConfig","owner":"osipxd"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"ejs":{"title":"EJS","require":["javascript","markup-templating"],"owner":"RunDevelopment","alias":"eta","aliasTitles":{"eta":"Eta"}},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"etlua":{"title":"Embedded Lua templating","require":["lua","markup-templating"],"owner":"RunDevelopment"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"excel-formula":{"title":"Excel Formula","alias":["xlsx","xls"],"owner":"RunDevelopment"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"factor":{"title":"Factor","owner":"catb0t"},"false":{"title":"False","owner":"edukisto"},"firestore-security-rules":{"title":"Firestore security rules","require":"clike","owner":"RunDevelopment"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"ftl":{"title":"FreeMarker Template Language","require":"markup-templating","owner":"RunDevelopment"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gdscript":{"title":"GDScript","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"c","owner":"Golmote"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"graphql":{"title":"GraphQL","optional":"markdown","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","optional":["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","owner":"Golmote"},"haskell":{"title":"Haskell","alias":"hs","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"hlsl":{"title":"HLSL","require":"c","owner":"RunDevelopment"},"http":{"title":"HTTP","optional":["css","javascript","json","markup","uri"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"icu-message-format":{"title":"ICU Message Format","owner":"RunDevelopment"},"idris":{"title":"Idris","alias":"idr","owner":"KeenS","require":"haskell"},"ignore":{"title":".ignore","owner":"osipxd","alias":["gitignore","hgignore","npmignore"],"aliasTitles":{"gitignore":".gitignore","hgignore":".hgignore","npmignore":".npmignore"}},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"modify":"java","optional":"scala","owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","modify":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jq":{"title":"JQ","owner":"RunDevelopment"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike","typescript"],"modify":"javascript","optional":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","modify":"javascript","optional":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"webmanifest","aliasTitles":{"webmanifest":"Web App Manifest"},"owner":"CupOfTea696"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"jsstacktrace":{"title":"JS stack trace","owner":"sbrl"},"js-templates":{"title":"JS Templates","require":"javascript","modify":"javascript","optional":["css","css-extras","graphql","markdown","markup"],"owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","alias":["kt","kts"],"aliasTitles":{"kts":"Kotlin Script"},"require":"clike","owner":"Golmote"},"kumir":{"title":"KuMir (КуМир)","alias":"kum","owner":"edukisto"},"latex":{"title":"LaTeX","alias":["tex","context"],"aliasTitles":{"tex":"TeX","context":"ConTeXt"},"owner":"japborst"},"latte":{"title":"Latte","require":["clike","markup-templating","php"],"owner":"nette"},"less":{"title":"Less","require":"css","optional":"css-extras","owner":"Golmote"},"lilypond":{"title":"LilyPond","require":"scheme","alias":"ly","owner":"RunDevelopment"},"liquid":{"title":"Liquid","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"llvm":{"title":"LLVM IR","owner":"porglezomp"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","optional":"yaml","alias":"md","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"matlab":{"title":"MATLAB","owner":"Golmote"},"mel":{"title":"MEL","owner":"Golmote"},"mizar":{"title":"Mizar","owner":"Golmote"},"mongodb":{"title":"MongoDB","owner":"airs0urce","require":"javascript"},"monkey":{"title":"Monkey","owner":"Golmote"},"moonscript":{"title":"MoonScript","alias":"moon","owner":"RunDevelopment"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","optional":"jsdoc","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"naniscript":{"title":"Naninovel Script","owner":"Elringus","alias":"nani"},"nasm":{"title":"NASM","owner":"rbmj"},"neon":{"title":"NEON","owner":"nette"},"nevod":{"title":"Nevod","owner":"nezaboodka"},"nginx":{"title":"nginx","owner":"volado"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","alias":"objc","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"opencl":{"title":"OpenCL","require":"c","modify":["c","cpp"],"owner":"Milania1"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"pascaligo":{"title":"Pascaligo","owner":"DefinitelyNotAGoat"},"psl":{"title":"PATROL Scripting Language","owner":"bertysentry"},"pcaxis":{"title":"PC-Axis","alias":"px","owner":"RunDevelopment"},"peoplecode":{"title":"PeopleCode","alias":"pcode","owner":"RunDevelopment"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":"markup-templating","owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"modify":"php","owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","modify":"php","owner":"milesj"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powerquery":{"title":"PowerQuery","alias":["pq","mscript"],"owner":"peterbud"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"promql":{"title":"PromQL","owner":"arendjr"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":["markup","javascript"],"optional":["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","optional":["c","cpp","fortran"],"owner":"Golmote"},"purebasic":{"title":"PureBasic","require":"clike","alias":"pbfasm","owner":"HeX0R101"},"purescript":{"title":"PureScript","require":"haskell","alias":"purs","owner":"sriharshachilakapati"},"python":{"title":"Python","alias":"py","owner":"multipetros"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qml":{"title":"QML","require":"javascript","owner":"RunDevelopment"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"racket":{"title":"Racket","require":"scheme","alias":"rkt","owner":"RunDevelopment"},"jsx":{"title":"React JSX","require":["markup","javascript"],"optional":["jsdoc","js-extras","js-templates"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"regex":{"title":"Regex","owner":"RunDevelopment"},"rego":{"title":"Rego","owner":"JordanSh"},"renpy":{"title":"Ren'py","alias":"rpy","owner":"HyuchiaDiego"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"robotframework":{"title":"Robot Framework","alias":"robot","owner":"RunDevelopment"},"ruby":{"title":"Ruby","require":"clike","alias":"rb","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","optional":["groovy","lua","sql"],"owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","owner":"Golmote"},"scss":{"title":"Sass (Scss)","require":"css","optional":"css-extras","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"shell-session":{"title":"Shell session","require":"bash","alias":["sh-session","shellsession"],"owner":"RunDevelopment"},"smali":{"title":"Smali","owner":"RunDevelopment"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","owner":"Golmote"},"sml":{"title":"SML","alias":"smlnj","aliasTitles":{"smlnj":"SML/NJ"},"owner":"RunDevelopment"},"solidity":{"title":"Solidity (Ethereum)","alias":"sol","require":"clike","owner":"glachaud"},"solution-file":{"title":"Solution file","alias":"sln","owner":"RunDevelopment"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"sparql":{"title":"SPARQL","require":"turtle","owner":"Triply-Dev","alias":"rq"},"splunk-spl":{"title":"Splunk SPL","owner":"RunDevelopment"},"sqf":{"title":"SQF: Status Quo Function (Arma 3)","require":"clike","owner":"RunDevelopment"},"sql":{"title":"SQL","owner":"multipetros"},"squirrel":{"title":"Squirrel","require":"clike","owner":"RunDevelopment"},"stan":{"title":"Stan","owner":"RunDevelopment"},"iecst":{"title":"Structured Text (IEC 61131-3)","owner":"serhioromano"},"stylus":{"title":"Stylus","owner":"vkbansal"},"swift":{"title":"Swift","require":"clike","owner":"chrischares"},"t4-templating":{"title":"T4 templating","owner":"RunDevelopment"},"t4-cs":{"title":"T4 Text Templates (C#)","require":["t4-templating","csharp"],"alias":"t4","owner":"RunDevelopment"},"t4-vb":{"title":"T4 Text Templates (VB)","require":["t4-templating","vbnet"],"owner":"RunDevelopment"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"textile":{"title":"Textile","require":"markup","optional":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"turtle":{"title":"Turtle","alias":"trig","aliasTitles":{"trig":"TriG"},"owner":"jakubklimek"},"twig":{"title":"Twig","require":"markup","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","optional":"js-templates","alias":"ts","owner":"vkbansal"},"typoscript":{"title":"TypoScript","alias":"tsconfig","aliasTitles":{"tsconfig":"TSConfig"},"owner":"dkern"},"unrealscript":{"title":"UnrealScript","alias":["uscript","uc"],"owner":"RunDevelopment"},"uri":{"title":"URI","alias":"url","aliasTitles":{"url":"URL"},"owner":"RunDevelopment"},"v":{"title":"V","require":"clike","owner":"taggon"},"vala":{"title":"Vala","require":"clike","optional":"regex","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":["vb","vba"],"aliasTitles":{"vba":"VBA"},"owner":"Golmote"},"warpscript":{"title":"WarpScript","owner":"RunDevelopment"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xml-doc":{"title":"XML doc (.net)","require":"markup","modify":["csharp","fsharp","vbnet"],"owner":"RunDevelopment"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","alias":"yml","owner":"hason"},"yang":{"title":"YANG","owner":"RunDevelopment"},"zig":{"title":"Zig","owner":"RunDevelopment"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":{"title":"Line Highlight","description":"Highlights specific lines and/or line ranges."},"line-numbers":{"title":"Line Numbers","description":"Line number at the beginning of code lines.","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","description":"Show hidden characters such as tabs and line breaks.","optional":["autolinker","data-uri-highlight"]},"autolinker":{"title":"Autolinker","description":"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},"wpd":{"title":"WebPlatform Docs","description":"Makes tokens link to WebPlatform.org documentation. The links open in a new tab."},"custom-class":{"title":"Custom Class","description":"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","description":"Fetch external files and highlight them with Prism. Used on the Prism website itself.","noCSS":true},"show-language":{"title":"Show Language","description":"Display the highlighted language in code blocks (inline code does not show the label).","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","description":"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","description":"Adds special CSS classes for each keyword matched in the code. For example, the keyword if will have the class keyword-if as well. You can have fine grained control over the appearance of each keyword by providing your own CSS rules.","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","description":"Removes the initial line feed in code blocks.","owner":"Golmote","noCSS":true},"inline-color":{"title":"Inline color","description":"Adds a small inline preview for colors in style sheets.","require":"css-extras","owner":"RunDevelopment"},"previewers":{"title":"Previewers","description":"Previewers for angles, colors, gradients, easing and time.","require":"css-extras","owner":"Golmote"},"autoloader":{"title":"Autoloader","description":"Automatically loads the needed languages to highlight the code blocks.","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","description":"Prevents custom markup from being dropped out during highlighting.","owner":"Golmote","optional":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","description":"Display a command line with a prompt and, optionally, the output/response from the commands.","owner":"chriswells0"},"unescaped-markup":{"title":"Unescaped Markup","description":"Write markup without having to escape anything."},"normalize-whitespace":{"title":"Normalize Whitespace","description":"Supports multiple operations to normalize whitespace in code blocks.","owner":"zeitgeist87","optional":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","description":"Highlights data-URI contents.","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","description":"Attach a toolbar for plugins to easily register buttons on the top of a code block.","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","description":"Add a button that copies the code block to the clipboard when clicked.","owner":"mAAdhaTTah","require":"toolbar","noCSS":true},"download-button":{"title":"Download Button","description":"A button in the toolbar of a code block adding a convenient way to download a code file.","owner":"Golmote","require":"toolbar","noCSS":true},"match-braces":{"title":"Match braces","description":"Highlights matching braces.","owner":"RunDevelopment"},"diff-highlight":{"title":"Diff Highlight","description":"Highlights the code inside diff blocks.","owner":"RunDevelopment","require":"diff"},"filter-highlight-all":{"title":"Filter highlightAll","description":"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.","owner":"RunDevelopment","noCSS":true},"treeview":{"title":"Treeview","description":"A language with special styles to highlight file system tree structures.","owner":"Golmote"}}}; if (typeof module !== 'undefined' && module.exports) { module.exports = components; } \ No newline at end of file From f394400b0769251510dc3954c266658f5cd4ac72 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 10 Mar 2021 19:11:47 +0300 Subject: [PATCH 15/25] Update components/prism-nevod.js Co-authored-by: Michael Schmidt --- components/prism-nevod.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 6158d89ac6..50658abba5 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -1,5 +1,5 @@ Prism.languages.nevod = { - 'comment': /(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/, + 'comment': /\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/, 'string': [ { pattern: /"(?:""|[^"])*"(?!")!?\*?/, From 9d24072449719c1d685d5be94b93c5c9b92754d7 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 10 Mar 2021 19:14:50 +0300 Subject: [PATCH 16/25] Update components/prism-nevod.js Co-authored-by: Michael Schmidt --- components/prism-nevod.js | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 50658abba5..bcc375611b 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -1,21 +1,12 @@ Prism.languages.nevod = { 'comment': /\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/, - 'string': [ - { - pattern: /"(?:""|[^"])*"(?!")!?\*?/, - greedy: true, - inside: { - 'modifiers': /!$|!\*$|\*$/, - }, + 'string': { + pattern: /(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/, + greedy: true, + inside: { + 'modifiers': /!$|!\*$|\*$/, }, - { - pattern: /'(?:''|[^'])*'(?!')!?\*?/, - greedy: true, - inside: { - 'modifiers': /!$|!\*$|\*$/, - }, - } - ], + }, 'keyword': /@(?:inside|outside|having|search|where)\b/, 'require': /@require\b/, 'namespace': { From c925a5ef4702b7d60e59af7429d41efe06a33ad9 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 10 Mar 2021 20:16:57 +0300 Subject: [PATCH 17/25] Fixing patterns for Nevod language. --- components/prism-nevod.js | 21 +++++++-------------- components/prism-nevod.min.js | 2 +- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index bcc375611b..ceb4cd0e43 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -7,23 +7,15 @@ Prism.languages.nevod = { 'modifiers': /!$|!\*$|\*$/, }, }, - 'keyword': /@(?:inside|outside|having|search|where)\b/, - 'require': /@require\b/, 'namespace': { - pattern: /@namespace\s+[a-zA-Z0-9\-.]+\s*{/, - inside: { - 'keyword': /@namespace\b/, - 'name': /\b[a-zA-Z0-9\-.]+/ - }, + pattern: /(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/, + lookbehind: true, }, 'pattern': { - pattern: /(?:@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/, + pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/, + lookbehind: true, inside: { - 'keyword': /@pattern\b/, - 'name': { - pattern: /^(\s+)?#?[a-zA-Z0-9\-.]+/, - lookbehind: true - }, + 'name': /#?[a-zA-Z0-9\-.]+/, 'equal': /=/, 'attributes': { pattern: /\(.*\)/, @@ -43,10 +35,11 @@ Prism.languages.nevod = { 'name': /#?.*(?=;)/ } }, + 'keyword': /@(?:require|namespace|pattern|inside|outside|having|search|where)\b/, 'basic-reference': { pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/, inside: { - 'name': /.+(?=[(\b])/, + 'name': /.+\b/, 'params': /\(.*\)/, }, }, diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index 4154d59140..cf741f4753 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/(?:\/\/.*)|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:[{pattern:/"(?:""|[^"])*"(?!")!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},{pattern:/'(?:''|[^'])*'(?!')!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}}],keyword:/@(?:inside|outside|having|search|where)\b/,require:/@require\b/,namespace:{pattern:/@namespace\s+[a-zA-Z0-9\-.]+\s*{/,inside:{keyword:/@namespace\b/,name:/\b[a-zA-Z0-9\-.]+/}},pattern:{pattern:/(?:@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,inside:{keyword:/@pattern\b/,name:{pattern:/^(\s+)?#?[a-zA-Z0-9\-.]+/,lookbehind:!0},equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(?:@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,inside:{keyword:/@search\b/,name:/#?.*(?=;)/}},"basic-reference":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+(?=[(\b])/,params:/\(.*\)/}},quantifier:/\b\d+(?:\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,lookbehind:!0,inside:{name:/#?[a-zA-Z0-9\-.]+/,equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(?:@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,inside:{keyword:/@search\b/,name:/#?.*(?=;)/}},keyword:/@(?:require|namespace|pattern|inside|outside|having|search|where)\b/,"basic-reference":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:/\b\d+(?:\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file From 2ebaae182155b5476fb6ba212a1453f3132f6754 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Wed, 10 Mar 2021 20:43:22 +0300 Subject: [PATCH 18/25] Fixing 'search' pattern. --- components/prism-nevod.js | 8 ++++---- components/prism-nevod.min.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index ceb4cd0e43..18bae1889f 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -29,13 +29,13 @@ Prism.languages.nevod = { }, }, 'search': { - pattern: /(?:@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/, + pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/, + lookbehind: true, inside: { - 'keyword': /@search\b/, - 'name': /#?.*(?=;)/ + 'name': /.*(?=;)/ } }, - 'keyword': /@(?:require|namespace|pattern|inside|outside|having|search|where)\b/, + 'keyword': /@(?:require|namespace|pattern|search|inside|outside|having|where)\b/, 'basic-reference': { pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/, inside: { diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index cf741f4753..4a4f09d0b6 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,lookbehind:!0,inside:{name:/#?[a-zA-Z0-9\-.]+/,equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(?:@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,inside:{keyword:/@search\b/,name:/#?.*(?=;)/}},keyword:/@(?:require|namespace|pattern|inside|outside|having|search|where)\b/,"basic-reference":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:/\b\d+(?:\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,lookbehind:!0,inside:{name:/#?[a-zA-Z0-9\-.]+/,equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,lookbehind:!0,inside:{name:/.*(?=;)/}},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"basic-reference":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:/\b\d+(?:\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file From c54eeb89fafa6add3cf0d0113a66323d524d3900 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Fri, 12 Mar 2021 01:22:53 +0300 Subject: [PATCH 19/25] Improve regexp patterns for Nevod language. Update operator_feature.test. --- components/prism-nevod.js | 56 +++++++++++++++------ components/prism-nevod.min.js | 2 +- tests/languages/nevod/operator_feature.test | 29 ++++------- 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 18bae1889f..0658d337e4 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -12,11 +12,11 @@ Prism.languages.nevod = { lookbehind: true, }, 'pattern': { - pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/, + pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?(?:=)/, + alias: 'class-name', lookbehind: true, inside: { 'name': /#?[a-zA-Z0-9\-.]+/, - 'equal': /=/, 'attributes': { pattern: /\(.*\)/, inside: { @@ -29,28 +29,52 @@ Prism.languages.nevod = { }, }, 'search': { - pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/, + pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/, + alias: 'function', lookbehind: true, - inside: { - 'name': /.*(?=;)/ - } }, 'keyword': /@(?:require|namespace|pattern|search|inside|outside|having|where)\b/, - 'basic-reference': { + 'builtin': { pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/, inside: { 'name': /.+\b/, 'params': /\(.*\)/, }, }, - 'quantifier': /\b\d+(?:\+|-\d+)?\b/, - 'conjunction': /&/, - 'exception': /~/, - 'optionality': /\?/, - 'bracket': /[()]/, - 'repetition': /[[\]]/, - 'variation': /[{}]/, - 'semi-colon': /;/, + 'quantifier': { + pattern: /\b\d+(?:\+|-\d+)?\b/, + alias: 'number', + }, + 'operator': [ + { + pattern: /&/, + alias: 'conjunction', + }, + { + pattern: /~/, + alias: 'exception', + }, + { + pattern: /\?/, + alias: 'optionality', + }, + { + pattern: /[[\]]/, + alias: 'repetition', + }, + { + pattern: /[{}]/, + alias: 'variation', + }, + { + pattern: /[+_]/, + alias: 'sequence', + }, + { + pattern: /\.{2,3}/, + alias: 'span', + }, + ], 'attr-capture': { pattern: /[a-zA-Z0-9\-.]+\s*:/, inside: { @@ -58,6 +82,6 @@ Prism.languages.nevod = { 'colon': /:/, }, }, - 'punctuation': /[,+_]|\.{2,3}/, + 'punctuation': /[:;,()=]/, 'name': /\S+/ } diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index 4a4f09d0b6..2ccb3c675a 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,lookbehind:!0,inside:{name:/#?[a-zA-Z0-9\-.]+/,equal:/=/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,lookbehind:!0,inside:{name:/.*(?=;)/}},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"basic-reference":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:/\b\d+(?:\+|-\d+)?\b/,conjunction:/&/,exception:/~/,optionality:/\?/,bracket:/[()]/,repetition:/[[\]]/,variation:/[{}]/,"semi-colon":/;/,"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[,+_]|\.{2,3}/,name:/\S+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?(?:=)/,alias:"class-name",lookbehind:!0,inside:{name:/#?[a-zA-Z0-9\-.]+/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,builtin:{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:{pattern:/\b\d+(?:\+|-\d+)?\b/,alias:"number"},operator:[{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[:;,()=]/,name:/\S+/}; \ No newline at end of file diff --git a/tests/languages/nevod/operator_feature.test b/tests/languages/nevod/operator_feature.test index 50c73227ef..62fb61b1ae 100644 --- a/tests/languages/nevod/operator_feature.test +++ b/tests/languages/nevod/operator_feature.test @@ -1,30 +1,23 @@ -, + _ +( , ) ; ++ _ .. ... -0-5 +[ 0-5 ] & ~ ? -() -[] {} -; ---------------------------------------------------- [ - ["punctuation", ","], ["punctuation", "+"], ["punctuation", "_"], - ["punctuation", ".."], ["punctuation", "..."], - ["quantifier", "0-5"], - ["conjunction", "&"], - ["exception", "~"], - ["optionality", "?"], - ["bracket", "("], - ["bracket", ")"], - ["repetition", "["], - ["repetition", "]"], - ["variation", "{"], - ["variation", "}"], - ["semi-colon", ";"] + ["punctuation", "("], ["punctuation", ","], ["punctuation", ")"], ["punctuation", ";"], + ["operator", "+"], ["operator", "_"], + ["operator", ".."], ["operator", "..."], + ["operator", "["], ["quantifier", "0-5"], ["operator", "]"], + ["operator", "&"], + ["operator", "~"], + ["operator", "?"], + ["operator", "{"], ["operator", "}"] ] ---------------------------------------------------- From c10ff32911696fe991d08ff7801d9ba930e5ac4a Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Fri, 12 Mar 2021 18:41:11 +0300 Subject: [PATCH 20/25] Improve patterns for Nevod language. --- components/prism-nevod.js | 10 ++++++---- components/prism-nevod.min.js | 2 +- tests/languages/nevod/string_feature.test | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 0658d337e4..3998731b19 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -4,7 +4,7 @@ Prism.languages.nevod = { pattern: /(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/, greedy: true, inside: { - 'modifiers': /!$|!\*$|\*$/, + 'string-attrs': /!$|!\*$|\*$/, }, }, 'namespace': { @@ -12,11 +12,13 @@ Prism.languages.nevod = { lookbehind: true, }, 'pattern': { - pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?(?:=)/, - alias: 'class-name', + pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/, lookbehind: true, inside: { - 'name': /#?[a-zA-Z0-9\-.]+/, + 'pattern-name': { + pattern: /#?[a-zA-Z0-9\-.]+/, + alias: 'class-name', + }, 'attributes': { pattern: /\(.*\)/, inside: { diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index 2ccb3c675a..af8e716e53 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{modifiers:/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?(?:=)/,alias:"class-name",lookbehind:!0,inside:{name:/#?[a-zA-Z0-9\-.]+/,attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,builtin:{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:{pattern:/\b\d+(?:\+|-\d+)?\b/,alias:"number"},operator:[{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[:;,()=]/,name:/\S+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,builtin:{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:{pattern:/\b\d+(?:\+|-\d+)?\b/,alias:"number"},operator:[{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[:;,()=]/,name:/\S+/}; \ No newline at end of file diff --git a/tests/languages/nevod/string_feature.test b/tests/languages/nevod/string_feature.test index 0d566df523..568f7db33b 100644 --- a/tests/languages/nevod/string_feature.test +++ b/tests/languages/nevod/string_feature.test @@ -14,11 +14,11 @@ ["string", ["\"text in double quotes\""]], ["string", ["\"\""]], ["string", ["'text in single quotes'"]], - ["string", ["'case-sensitive text'", ["modifiers", "!"]]], + ["string", ["'case-sensitive text'", ["string-attrs", "!"]]], ["string", ["'text ''Nevod'' in quotes'"]], ["string", ["\"text \"\"Nevod\"\" in double quotes\""]], - ["string", ["'text prefix'", ["modifiers", "*"]]], - ["string", ["'case-sensitive text prefix'", ["modifiers", "!*"]]], + ["string", ["'text prefix'", ["string-attrs", "*"]]], + ["string", ["'case-sensitive text prefix'", ["string-attrs", "!*"]]], ["string", ["''"]] ] From 4cdaae9d29e90db2aac2200956fcb6d2f95d002c Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Mon, 15 Mar 2021 16:27:35 +0300 Subject: [PATCH 21/25] Fix regexp patterns for Nevod language. --- components/prism-nevod.js | 49 +++++++++++++++++++++++++---------- components/prism-nevod.min.js | 2 +- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 3998731b19..84e203eeb5 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -16,16 +16,21 @@ Prism.languages.nevod = { lookbehind: true, inside: { 'pattern-name': { - pattern: /#?[a-zA-Z0-9\-.]+/, + pattern: /^#?[a-zA-Z0-9\-.]+/, alias: 'class-name', }, 'attributes': { pattern: /\(.*\)/, inside: { - 'attr-name': /[a-zA-Z0-9\-.]+/, - 'attr-hidden-mark': /~/, - 'attr-punctuation': /[,]/, - 'attr-bracket': /[()]/, + 'attr-name': { + pattern: /[a-zA-Z0-9\-.]+/, + alias: 'variable', + }, + 'punctuation': /[,()]/, + 'operator': { + pattern: /~/, + alias: 'attr-hidden-mark', + }, }, }, }, @@ -36,18 +41,33 @@ Prism.languages.nevod = { lookbehind: true, }, 'keyword': /@(?:require|namespace|pattern|search|inside|outside|having|where)\b/, - 'builtin': { - pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/, + 'standard-pattern': { + pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/, inside: { - 'name': /.+\b/, - 'params': /\(.*\)/, + 'standard-pattern-name': { + pattern: /^[a-zA-Z0-9\-.]+/, + alias: 'builtin', + }, + 'quantifier': { + pattern: /\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/, + alias: 'number', + }, + 'standard-pattern-attr': { + pattern: /[a-zA-Z0-9\-.]+/, + alias: 'builtin', + }, + 'punctuation': /[,()]/, }, }, 'quantifier': { - pattern: /\b\d+(?:\+|-\d+)?\b/, + pattern: /\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/, alias: 'number', }, 'operator': [ + { + pattern: /=/, + alias: 'pattern-def', + }, { pattern: /&/, alias: 'conjunction', @@ -80,10 +100,13 @@ Prism.languages.nevod = { 'attr-capture': { pattern: /[a-zA-Z0-9\-.]+\s*:/, inside: { - 'attr-name': /[a-zA-Z0-9\-.]+/, + 'attr-name': { + pattern: /[a-zA-Z0-9\-.]+/, + alias: 'variable', + }, 'colon': /:/, }, }, - 'punctuation': /[:;,()=]/, - 'name': /\S+/ + 'punctuation': /[:;,()]/, + 'name': /[a-zA-Z0-9\-.]+/ } diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index af8e716e53..9c8306d972 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,"attr-hidden-mark":/~/,"attr-punctuation":/[,]/,"attr-bracket":/[()]/}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,builtin:{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,inside:{name:/.+\b/,params:/\(.*\)/}},quantifier:{pattern:/\b\d+(?:\+|-\d+)?\b/,alias:"number"},operator:[{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":/[a-zA-Z0-9\-.]+/,colon:/:/}},punctuation:/[:;,()=]/,name:/\S+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"attr-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file From 1e009ecdc7e05640471384ff29bb309d96467bac Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Mon, 15 Mar 2021 16:58:40 +0300 Subject: [PATCH 22/25] Fix regexp patterns for Nevod language. --- components/prism-nevod.js | 2 +- components/prism-nevod.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 84e203eeb5..1918d7264a 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -36,7 +36,7 @@ Prism.languages.nevod = { }, }, 'search': { - pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/, + pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/, alias: 'function', lookbehind: true, }, diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index 9c8306d972..6771801ef1 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"attr-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"attr-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file From 0c23fbe9d163dfa9c44c8710988e133dae24bc7f Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Mon, 15 Mar 2021 17:41:15 +0300 Subject: [PATCH 23/25] Fix regexp patterns for Nevod language. --- components/prism-nevod.js | 29 +++++++++++++++++++++-------- components/prism-nevod.min.js | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 1918d7264a..a602da31d9 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -97,16 +97,29 @@ Prism.languages.nevod = { alias: 'span', }, ], - 'attr-capture': { - pattern: /[a-zA-Z0-9\-.]+\s*:/, - inside: { - 'attr-name': { - pattern: /[a-zA-Z0-9\-.]+/, - alias: 'variable', + 'attr-capture': [ + { + pattern: /([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/, + lookbehind: true, + inside: { + 'attr-name': { + pattern: /[a-zA-Z0-9\-.]+/, + alias: 'variable', + }, + 'colon': /:/, }, - 'colon': /:/, }, - }, + { + pattern: /[a-zA-Z0-9\-.]+\s*:/, + inside: { + 'attr-name': { + pattern: /[a-zA-Z0-9\-.]+/, + alias: 'variable', + }, + 'colon': /:/, + }, + }, + ], 'punctuation': /[:;,()]/, 'name': /[a-zA-Z0-9\-.]+/ } diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index 6771801ef1..90e6c2f2a1 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"attr-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"attr-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file From f971bae8ceafd85c9e4ce63938af9424a9419029 Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Mon, 15 Mar 2021 17:50:36 +0300 Subject: [PATCH 24/25] Change pattern names for Nevod language. --- components/prism-nevod.js | 12 ++++++------ components/prism-nevod.min.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index a602da31d9..5f7fe26bdc 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -19,17 +19,17 @@ Prism.languages.nevod = { pattern: /^#?[a-zA-Z0-9\-.]+/, alias: 'class-name', }, - 'attributes': { + 'fields': { pattern: /\(.*\)/, inside: { - 'attr-name': { + 'field-name': { pattern: /[a-zA-Z0-9\-.]+/, alias: 'variable', }, 'punctuation': /[,()]/, 'operator': { pattern: /~/, - alias: 'attr-hidden-mark', + alias: 'field-hidden-mark', }, }, }, @@ -97,12 +97,12 @@ Prism.languages.nevod = { alias: 'span', }, ], - 'attr-capture': [ + 'field-capture': [ { pattern: /([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/, lookbehind: true, inside: { - 'attr-name': { + 'field-name': { pattern: /[a-zA-Z0-9\-.]+/, alias: 'variable', }, @@ -112,7 +112,7 @@ Prism.languages.nevod = { { pattern: /[a-zA-Z0-9\-.]+\s*:/, inside: { - 'attr-name': { + 'field-name': { pattern: /[a-zA-Z0-9\-.]+/, alias: 'variable', }, diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index 90e6c2f2a1..e41f1eaa3d 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},attributes:{pattern:/\(.*\)/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"attr-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"attr-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"attr-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},fields:{pattern:/\(.*\)/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"field-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"field-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file From 66037d9e20ee559f3704f788c13148146a1e965e Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Mon, 15 Mar 2021 18:18:11 +0300 Subject: [PATCH 25/25] Fix regexp patterns and tests for Nevod language. --- components/prism-nevod.js | 6 +++--- components/prism-nevod.min.js | 2 +- tests/languages/nevod/keyword_feature.test | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/components/prism-nevod.js b/components/prism-nevod.js index 5f7fe26bdc..6a8d216f94 100644 --- a/components/prism-nevod.js +++ b/components/prism-nevod.js @@ -12,7 +12,7 @@ Prism.languages.nevod = { lookbehind: true, }, 'pattern': { - pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/, + pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*[(]\s*(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:~\s*)?[a-zA-Z0-9\-.]*)*[)])?(?=\s*=)/, lookbehind: true, inside: { 'pattern-name': { @@ -49,7 +49,7 @@ Prism.languages.nevod = { alias: 'builtin', }, 'quantifier': { - pattern: /\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/, + pattern: /\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/, alias: 'number', }, 'standard-pattern-attr': { @@ -60,7 +60,7 @@ Prism.languages.nevod = { }, }, 'quantifier': { - pattern: /\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/, + pattern: /\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/, alias: 'number', }, 'operator': [ diff --git a/components/prism-nevod.min.js b/components/prism-nevod.min.js index e41f1eaa3d..ed3181d82e 100644 --- a/components/prism-nevod.min.js +++ b/components/prism-nevod.min.js @@ -1 +1 @@ -Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)]))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},fields:{pattern:/\(.*\)/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"field-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+\s*(?:\+|-\s*\d+)?(?=\W)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"field-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file +Prism.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*[(]\s*(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:~\s*)?[a-zA-Z0-9\-.]*)*[)])?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},fields:{pattern:/\(.*\)/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"field-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,"standard-pattern":{pattern:/\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"field-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}; \ No newline at end of file diff --git a/tests/languages/nevod/keyword_feature.test b/tests/languages/nevod/keyword_feature.test index cf6951c279..0c241d95e2 100644 --- a/tests/languages/nevod/keyword_feature.test +++ b/tests/languages/nevod/keyword_feature.test @@ -1,11 +1,13 @@ +@require @namespace @pattern @search @inside @outside @having -@search @where +@where ---------------------------------------------------- [ + ["keyword", "@require"], ["keyword", "@namespace"], ["keyword", "@pattern"], ["keyword", "@search"], ["keyword", "@inside"], ["keyword", "@outside"], ["keyword", "@having"], - ["keyword", "@search"], ["keyword", "@where"] + ["keyword", "@where"] ] ----------------------------------------------------