diff --git a/components/prism-c.min.js b/components/prism-c.min.js index 4392c5cfbc..30740be25c 100644 --- a/components/prism-c.min.js +++ b/components/prism-c.min.js @@ -1 +1 @@ -Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; \ No newline at end of file +Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(define|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; \ No newline at end of file diff --git a/components/prism-csharp.min.js b/components/prism-csharp.min.js index f9b3c9bd2f..95c4fd23a7 100644 --- a/components/prism-csharp.min.js +++ b/components/prism-csharp.min.js @@ -1 +1 @@ -Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),Prism.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}); \ No newline at end of file +Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),Prism.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}); \ No newline at end of file diff --git a/components/prism-fsharp.min.js b/components/prism-fsharp.min.js index 4a30f95f61..215dbeb1dc 100644 --- a/components/prism-fsharp.min.js +++ b/components/prism-fsharp.min.js @@ -1 +1 @@ -Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\w\W]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\\1|\\?(?!\1)[\s\S])*\1)B?/,number:[/\b-?0x[\da-fA-F]+(un|lf|LF)?\b/,/\b-?0b[01]+(y|uy)?\b/,/\b-?(\d*\.?\d+|\d+\.)([fFmM]|[eE][+-]?\d+)?\b/,/\b-?\d+(y|uy|s|us|l|u|ul|L|UL|I)?\b/]}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:/^[^\r\n\S]*#.*/m}); \ No newline at end of file +Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\w\W]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\\1|\\?(?!\1)[\s\S])*\1)B?/,number:[/\b-?0x[\da-fA-F]+(un|lf|LF)?\b/,/\b-?0b[01]+(y|uy)?\b/,/\b-?(\d*\.?\d+|\d+\.)([fFmM]|[eE][+-]?\d+)?\b/,/\b-?\d+(y|uy|s|us|l|u|ul|L|UL|I)?\b/]}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}); \ No newline at end of file diff --git a/components/prism-javascript.min.js b/components/prism-javascript.min.js index c0a924ba67..a3135dbd5c 100644 --- a/components/prism-javascript.min.js +++ b/components/prism-javascript.min.js @@ -1 +1 @@ -Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; \ No newline at end of file +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; \ No newline at end of file diff --git a/components/prism-jsx.js b/components/prism-jsx.js index a777484f64..07a04af44e 100644 --- a/components/prism-jsx.js +++ b/components/prism-jsx.js @@ -14,7 +14,8 @@ Prism.languages.insertBefore('inside', 'attr-value',{ inside: { 'function' : Prism.languages.javascript.function, 'punctuation': /[={}[\];(),.:]/, - 'keyword': Prism.languages.javascript.keyword + 'keyword': Prism.languages.javascript.keyword, + 'boolean': Prism.languages.javascript.boolean }, 'alias': 'language-javascript' } diff --git a/components/prism-jsx.min.js b/components/prism-jsx.min.js index 0bfe9b1cb2..7ca3d36576 100644 --- a/components/prism-jsx.min.js +++ b/components/prism-jsx.min.js @@ -1 +1 @@ -!function(a){var s=a.util.clone(a.languages.javascript);a.languages.jsx=a.languages.extend("markup",s),a.languages.jsx.tag.pattern=/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i,a.languages.jsx.tag.inside["attr-value"].pattern=/=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i,a.languages.insertBefore("inside","attr-value",{script:{pattern:/=(\{(?:\{[^}]*\}|[^}])+\})/i,inside:{"function":a.languages.javascript.function,punctuation:/[={}[\];(),.:]/,keyword:a.languages.javascript.keyword},alias:"language-javascript"}},a.languages.jsx.tag)}(Prism); \ No newline at end of file +!function(a){var s=a.util.clone(a.languages.javascript);a.languages.jsx=a.languages.extend("markup",s),a.languages.jsx.tag.pattern=/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i,a.languages.jsx.tag.inside["attr-value"].pattern=/=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i,a.languages.insertBefore("inside","attr-value",{script:{pattern:/=(\{(?:\{[^}]*\}|[^}])+\})/i,inside:{"function":a.languages.javascript.function,punctuation:/[={}[\];(),.:]/,keyword:a.languages.javascript.keyword,"boolean":a.languages.javascript.boolean},alias:"language-javascript"}},a.languages.jsx.tag)}(Prism); \ No newline at end of file diff --git a/prism.js b/prism.js index f575db3ae8..71642871dc 100644 --- a/prism.js +++ b/prism.js @@ -581,7 +581,7 @@ Prism.languages.clike = { ********************************************** */ Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/, + 'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, 'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) 'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i diff --git a/tests/languages/bison/c_feature.test b/tests/languages/bison/c_feature.test index a131ec3d84..4d8be839d5 100644 --- a/tests/languages/bison/c_feature.test +++ b/tests/languages/bison/c_feature.test @@ -21,7 +21,7 @@ exp: ["bison", [ ["c", [ ["delimiter", "%{"], - ["macro", ["#include ", ["string", ""]]], + ["macro", ["#", ["directive", "include"], ["string", ""]]], ["delimiter", "%}"] ]], ["keyword", "%code"], diff --git a/tests/languages/c/macro_feature.test b/tests/languages/c/macro_feature.test index f537cb72c0..2860f544c7 100644 --- a/tests/languages/c/macro_feature.test +++ b/tests/languages/c/macro_feature.test @@ -1,17 +1,41 @@ # include #define PG_locked 0 -#foo \ -bar + +#elif +#else +#endif +#error +#ifdef +#ifndef +#if +#import +#include +#line +#pragma +#undef +#using ---------------------------------------------------- [ ["macro", [ - "# include ", + "# ", ["directive", "include"], ["string", ""] ]], - ["macro", ["#define PG_locked 0"]], - ["macro", ["#foo \\\r\nbar"]] + ["macro", ["#", ["directive", "define"], " PG_locked 0"]], + ["macro", ["#", ["directive", "elif"]]], + ["macro", ["#", ["directive", "else"]]], + ["macro", ["#", ["directive", "endif"]]], + ["macro", ["#", ["directive", "error"]]], + ["macro", ["#", ["directive", "ifdef"]]], + ["macro", ["#", ["directive", "ifndef"]]], + ["macro", ["#", ["directive", "if"]]], + ["macro", ["#", ["directive", "import"]]], + ["macro", ["#", ["directive", "include"]]], + ["macro", ["#", ["directive", "line"]]], + ["macro", ["#", ["directive", "pragma"]]], + ["macro", ["#", ["directive", "undef"]]], + ["macro", ["#", ["directive", "using"]]] ] ---------------------------------------------------- diff --git a/tests/languages/csharp/preprocessor_feature.test b/tests/languages/csharp/preprocessor_feature.test index b87a253701..93ad4903ab 100644 --- a/tests/languages/csharp/preprocessor_feature.test +++ b/tests/languages/csharp/preprocessor_feature.test @@ -2,12 +2,32 @@ #if DEBUG #endif +#elif +#else +#endregion +#error +#line +#pragma +#region +#undef +#warning + ---------------------------------------------------- [ - ["preprocessor", "#define DEBUG"], - ["preprocessor", "#if DEBUG"], - ["preprocessor", "#endif"] + ["preprocessor", ["#", ["directive", "define"], " DEBUG"]], + ["preprocessor", ["#", ["directive", "if"], " DEBUG"]], + ["preprocessor", ["#", ["directive", "endif"]]], + + ["preprocessor", ["#", ["directive", "elif"]]], + ["preprocessor", ["#", ["directive", "else"]]], + ["preprocessor", ["#", ["directive", "endregion"]]], + ["preprocessor", ["#", ["directive", "error"]]], + ["preprocessor", ["#", ["directive", "line"]]], + ["preprocessor", ["#", ["directive", "pragma"]]], + ["preprocessor", ["#", ["directive", "region"]]], + ["preprocessor", ["#", ["directive", "undef"]]], + ["preprocessor", ["#", ["directive", "warning"]]] ] ---------------------------------------------------- diff --git a/tests/languages/fsharp/preprocessor_feature.test b/tests/languages/fsharp/preprocessor_feature.test index 0bb16a6a24..4ee06395f4 100644 --- a/tests/languages/fsharp/preprocessor_feature.test +++ b/tests/languages/fsharp/preprocessor_feature.test @@ -2,12 +2,19 @@ #else #endif +#light +#line +#nowarn + ---------------------------------------------------- [ - ["preprocessor", "#if foo"], - ["preprocessor", "#else"], - ["preprocessor", "#endif"] + ["preprocessor", ["#", ["directive", "if"], " foo"]], + ["preprocessor", ["#", ["directive", "else"]]], + ["preprocessor", ["#", ["directive", "endif"]]], + ["preprocessor", ["#", ["directive", "light"]]], + ["preprocessor", ["#", ["directive", "line"]]], + ["preprocessor", ["#", ["directive", "nowarn"]]] ] ---------------------------------------------------- diff --git a/tests/languages/javascript/boolean_feature.test b/tests/languages/javascript/boolean_feature.test new file mode 100644 index 0000000000..4019c444f8 --- /dev/null +++ b/tests/languages/javascript/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/tests/languages/javascript/keyword_feature.test b/tests/languages/javascript/keyword_feature.test index 13f7bf7136..13b88875d0 100644 --- a/tests/languages/javascript/keyword_feature.test +++ b/tests/languages/javascript/keyword_feature.test @@ -1,12 +1,12 @@ as; async; await; break; case; catch; class; const; continue; debugger; default; delete; do; else; enum; -export; extends; false; finally; for; +export; extends; finally; for; from; function; get; if; implements; import; in; instanceof; interface; let; new; null; of; package; private; protected; public; return; set; static; -super; switch; this; throw; true; +super; switch; this; throw; try; typeof; var; void; while; with; yield; @@ -30,7 +30,6 @@ with; yield; ["keyword", "enum"], ["punctuation", ";"], ["keyword", "export"], ["punctuation", ";"], ["keyword", "extends"], ["punctuation", ";"], - ["keyword", "false"], ["punctuation", ";"], ["keyword", "finally"], ["punctuation", ";"], ["keyword", "for"], ["punctuation", ";"], ["keyword", "from"], ["punctuation", ";"], @@ -57,7 +56,6 @@ with; yield; ["keyword", "switch"], ["punctuation", ";"], ["keyword", "this"], ["punctuation", ";"], ["keyword", "throw"], ["punctuation", ";"], - ["keyword", "true"], ["punctuation", ";"], ["keyword", "try"], ["punctuation", ";"], ["keyword", "typeof"], ["punctuation", ";"], ["keyword", "var"], ["punctuation", ";"], diff --git a/tests/languages/jsx/tag_feature.test b/tests/languages/jsx/tag_feature.test index 7d523beaa7..6a4a8c5b3f 100644 --- a/tests/languages/jsx/tag_feature.test +++ b/tests/languages/jsx/tag_feature.test @@ -35,7 +35,7 @@ var myElement = ; ["script", [ ["punctuation", "="], ["punctuation", "{"], - ["keyword", "true"], + ["boolean", "true"], ["punctuation", "}"] ]], ["punctuation", "/>"] diff --git a/tests/languages/markup+javascript+csharp+aspnet/script_feature.test b/tests/languages/markup+javascript+csharp+aspnet/script_feature.test index 2be50eb3e6..aa07913e92 100644 --- a/tests/languages/markup+javascript+csharp+aspnet/script_feature.test +++ b/tests/languages/markup+javascript+csharp+aspnet/script_feature.test @@ -1,4 +1,4 @@ - + ---------------------------------------------------- @@ -21,7 +21,7 @@ ["punctuation", ">"] ]], ["asp script", [ - ["preprocessor", "#foo"] + ["preprocessor", ["#", ["directive", "pragma"]]] ]], ["tag", [ ["tag", [