From 0247dfabbc24fde5a96dcc4a2455499651f97f2f Mon Sep 17 00:00:00 2001 From: Dmitry Surkov Date: Mon, 15 Mar 2021 16:27:35 +0300 Subject: [PATCH] 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