diff --git a/components/prism-bsl.js b/components/prism-bsl.js index ba3a5a9b83..ae2cd8fa37 100644 --- a/components/prism-bsl.js +++ b/components/prism-bsl.js @@ -44,15 +44,15 @@ Prism.languages.bsl = { { pattern: /\b(?:and|not|or)\b/i } - ], 'punctuation': /\(\.|\.\)|[()\[\]:;,.]/, 'directive': [ // Теги препроцессора вида &Клиент, &Сервер, ... // Preprocessor tags of the type &Client, &Server, ... { - pattern: /^(\s*)&.*/m, + pattern: /^([ \t]*)&.*/m, lookbehind: true, + greedy: true, alias: 'important' }, // Инструкции препроцессора вида: @@ -64,7 +64,9 @@ Prism.languages.bsl = { // ... // #EndIf { - pattern: /^\s*#.*/gm, + pattern: /^([ \t]*)#.*/gm, + lookbehind: true, + greedy: true, alias: 'important' } ] diff --git a/components/prism-bsl.min.js b/components/prism-bsl.min.js index 7d5cbe8f71..4c93478087 100644 --- a/components/prism-bsl.min.js +++ b/components/prism-bsl.min.js @@ -1 +1 @@ -Prism.languages.bsl={comment:/\/\/.*/,string:[{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},{pattern:/'(?:[^'\r\n\\]|\\.)*'/}],keyword:[{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i}],number:{pattern:/(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i,lookbehind:!0},operator:[/[<>+\-*/]=?|[%=]/,{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:and|not|or)\b/i}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/,directive:[{pattern:/^(\s*)&.*/m,lookbehind:!0,alias:"important"},{pattern:/^\s*#.*/gm,alias:"important"}]},Prism.languages.oscript=Prism.languages.bsl; \ No newline at end of file +Prism.languages.bsl={comment:/\/\/.*/,string:[{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},{pattern:/'(?:[^'\r\n\\]|\\.)*'/}],keyword:[{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i}],number:{pattern:/(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i,lookbehind:!0},operator:[/[<>+\-*/]=?|[%=]/,{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:and|not|or)\b/i}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/,directive:[{pattern:/^([ \t]*)&.*/m,lookbehind:!0,greedy:!0,alias:"important"},{pattern:/^([ \t]*)#.*/gm,lookbehind:!0,greedy:!0,alias:"important"}]},Prism.languages.oscript=Prism.languages.bsl; \ No newline at end of file diff --git a/tests/languages/bsl/directive_feature.test b/tests/languages/bsl/directive_feature.test new file mode 100644 index 0000000000..df0b91ee07 --- /dev/null +++ b/tests/languages/bsl/directive_feature.test @@ -0,0 +1,13 @@ +&Client + +#If Server Then +#EndIf + +---------------------------------------------------- + +[ + ["directive", "&Client"], + + ["directive", "#If Server Then"], + ["directive", "#EndIf"] +] diff --git a/tests/languages/bsl/punctuation_feature.test b/tests/languages/bsl/punctuation_feature.test new file mode 100644 index 0000000000..9a6f11899f --- /dev/null +++ b/tests/languages/bsl/punctuation_feature.test @@ -0,0 +1,18 @@ +(. .) +( ) [ ] : ; , . + +---------------------------------------------------- + +[ + ["punctuation", "(."], + ["punctuation", ".)"], + + ["punctuation", "("], + ["punctuation", ")"], + ["punctuation", "["], + ["punctuation", "]"], + ["punctuation", ":"], + ["punctuation", ";"], + ["punctuation", ","], + ["punctuation", "."] +] diff --git a/tests/languages/bsl/string_feature.test b/tests/languages/bsl/string_feature.test index 4df2508a87..abb8b2dba4 100644 --- a/tests/languages/bsl/string_feature.test +++ b/tests/languages/bsl/string_feature.test @@ -1,13 +1,19 @@ "" "fo" +'' +'foo' + ---------------------------------------------------- [ ["string", "\"\""], - ["string", "\"fo\""] + ["string", "\"fo\""], + + ["string", "''"], + ["string", "'foo'"] ] ---------------------------------------------------- -Checks for strings and chars. \ No newline at end of file +Checks for strings and chars.