Julia: Added `char` token (#3223)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
diff --git a/components/prism-julia.js b/components/prism-julia.js
index dbfdc0b..d8d950f 100644
--- a/components/prism-julia.js
+++ b/components/prism-julia.js
@@ -11,11 +11,15 @@ Prism.languages.julia = {
greedy: true
},
'string': {
- // https://docs.julialang.org/en/v1/manual/strings/#man-characters-1
// https://docs.julialang.org/en/v1/manual/strings/#String-Basics-1
// https://docs.julialang.org/en/v1/manual/strings/#non-standard-string-literals-1
// https://docs.julialang.org/en/v1/manual/running-external-programs/#Running-External-Programs-1
- pattern: /"""[\s\S]+?"""|(?:\b\w+)?"(?:\\.|[^"\\\r\n])*"|(^|[^\w'])'(?:\\[^\r\n][^'\r\n]*|[^\\\r\n])'|`(?:[^\\`\r\n]|\\.)*`/,
+ pattern: /"""[\s\S]+?"""|(?:\b\w+)?"(?:\\.|[^"\\\r\n])*"|`(?:[^\\`\r\n]|\\.)*`/,
+ greedy: true
+ },
+ 'char': {
+ // https://docs.julialang.org/en/v1/manual/strings/#man-characters-1
+ pattern: /(^|[^\w'])'(?:\\[^\r\n][^'\r\n]*|[^\\\r\n])'/,
lookbehind: true,
greedy: true
},
diff --git a/components/prism-julia.min.js b/components/prism-julia.min.js
index e9e678b..b677d30 100644
--- a/components/prism-julia.min.js
+++ b/components/prism-julia.min.js
@@ -1 +1 @@
-Prism.languages.julia={comment:{pattern:/(^|[^\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,lookbehind:!0},regex:{pattern:/r"(?:\\.|[^"\\\r\n])*"[imsx]{0,4}/,greedy:!0},string:{pattern:/"""[\s\S]+?"""|(?:\b\w+)?"(?:\\.|[^"\\\r\n])*"|(^|[^\w'])'(?:\\[^\r\n][^'\r\n]*|[^\\\r\n])'|`(?:[^\\`\r\n]|\\.)*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\b/,boolean:/\b(?:false|true)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[box])?(?:[\da-f]+(?:_[\da-f]+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[efp][+-]?\d+(?:_\d+)*)?j?/i,operator:/&&|\|\||[-+*^%÷⊻&$\\]=?|\/[\/=]?|!=?=?|\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥'√∛]/,punctuation:/::?|[{}[\]();,.?]/,constant:/\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\b|[πℯ]/};
\ No newline at end of file
+Prism.languages.julia={comment:{pattern:/(^|[^\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,lookbehind:!0},regex:{pattern:/r"(?:\\.|[^"\\\r\n])*"[imsx]{0,4}/,greedy:!0},string:{pattern:/"""[\s\S]+?"""|(?:\b\w+)?"(?:\\.|[^"\\\r\n])*"|`(?:[^\\`\r\n]|\\.)*`/,greedy:!0},char:{pattern:/(^|[^\w'])'(?:\\[^\r\n][^'\r\n]*|[^\\\r\n])'/,lookbehind:!0,greedy:!0},keyword:/\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\b/,boolean:/\b(?:false|true)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[box])?(?:[\da-f]+(?:_[\da-f]+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[efp][+-]?\d+(?:_\d+)*)?j?/i,operator:/&&|\|\||[-+*^%÷⊻&$\\]=?|\/[\/=]?|!=?=?|\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥'√∛]/,punctuation:/::?|[{}[\]();,.?]/,constant:/\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\b|[πℯ]/};
\ No newline at end of file
diff --git a/tests/languages/julia/char_feature.test b/tests/languages/julia/char_feature.test
new file mode 100644
index 0000000..062087e
--- /dev/null
+++ b/tests/languages/julia/char_feature.test
@@ -0,0 +1,31 @@
+'x'
+'\''
+'\u2200'
+'\x80'
+'\xe2\x88'
+'∀'
+
+# not a character
+A'b
+A'b''
+
+----------------------------------------------------
+
+[
+ ["char", "'x'"],
+ ["char", "'\\''"],
+ ["char", "'\\u2200'"],
+ ["char", "'\\x80'"],
+ ["char", "'\\xe2\\x88'"],
+ ["char", "'∀'"],
+
+ ["comment", "# not a character"],
+
+ "\r\nA",
+ ["operator", "'"],
+ "b\r\nA",
+ ["operator", "'"],
+ "b",
+ ["operator", "'"],
+ ["operator", "'"]
+]
diff --git a/tests/languages/julia/string_feature.test b/tests/languages/julia/string_feature.test
index b88864a..916d038 100644
--- a/tests/languages/julia/string_feature.test
+++ b/tests/languages/julia/string_feature.test
@@ -2,13 +2,6 @@
"fo\"o"
"\xe2\x88"
-'x'
-'\''
-'\u2200'
-'\x80'
-'\xe2\x88'
-'∀'
-
"""foo"""
"""fo"o
bar"""
@@ -22,10 +15,6 @@ b"DATA\xff\u2200"
v"0.3-"
raw"\\ \\\""
-# not a character
-A'b
-A'b''
-
----------------------------------------------------
[
@@ -33,13 +22,6 @@ A'b''
["string", "\"fo\\\"o\""],
["string", "\"\\xe2\\x88\""],
- ["string", "'x'"],
- ["string", "'\\''"],
- ["string", "'\\u2200'"],
- ["string", "'\\x80'"],
- ["string", "'\\xe2\\x88'"],
- ["string", "'∀'"],
-
["string", "\"\"\"foo\"\"\""],
["string", "\"\"\"fo\"o\r\nbar\"\"\""],
@@ -50,16 +32,7 @@ A'b''
["string", "s\"\\g<0>1\""],
["string", "b\"DATA\\xff\\u2200\""],
["string", "v\"0.3-\""],
- ["string", "raw\"\\\\ \\\\\\\"\""],
-
- ["comment", "# not a character"],
- "\r\nA",
- ["operator", "'"],
- "b\r\nA",
- ["operator", "'"],
- "b",
- ["operator", "'"],
- ["operator", "'"]
+ ["string", "raw\"\\\\ \\\\\\\"\""]
]
----------------------------------------------------