From 1cb3292966d54c444d8505bc9ac0b3306fc52f4f Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Fri, 12 Mar 2021 18:41:11 +0300 Subject: [PATCH] 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", ["''"]] ]