Java: Added `char` token (#3217)
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-java.js b/components/prism-java.js
index 83ddd00..9fe9f69 100644
--- a/components/prism-java.js
+++ b/components/prism-java.js
@@ -21,6 +21,11 @@
};
Prism.languages.java = Prism.languages.extend('clike', {
+ 'string': {
+ pattern: /(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,
+ lookbehind: true,
+ greedy: true
+ },
'class-name': [
className,
{
@@ -52,6 +57,10 @@
pattern: /"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,
greedy: true,
alias: 'string'
+ },
+ 'char': {
+ pattern: /'(?:\\.|[^'\\\r\n]){1,6}'/,
+ greedy: true
}
});
diff --git a/components/prism-java.min.js b/components/prism-java.min.js
index 75ba5da..897da4e 100644
--- a/components/prism-java.min.js
+++ b/components/prism-java.min.js
@@ -1 +1 @@
-!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",a={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{"class-name":[a,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:a.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(/<keyword>/g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);
\ No newline at end of file
+!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",a={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[a,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:a.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(/<keyword>/g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);
\ No newline at end of file
diff --git a/tests/languages/java/char_feature.test b/tests/languages/java/char_feature.test
new file mode 100644
index 0000000..f376ee9
--- /dev/null
+++ b/tests/languages/java/char_feature.test
@@ -0,0 +1,11 @@
+'A'
+'\n'
+'\u0041'
+
+----------------------------------------------------
+
+[
+ ["char", "'A'"],
+ ["char", "'\\n'"],
+ ["char", "'\\u0041'"]
+]
diff --git a/tests/languages/java/generics_feature.test b/tests/languages/java/generics_feature.test
index 7944a7e..989187b 100644
--- a/tests/languages/java/generics_feature.test
+++ b/tests/languages/java/generics_feature.test
@@ -83,7 +83,7 @@ if (a<6&&b>6){}
["punctuation", "("],
["number", "12.2585"],
["punctuation", ","],
- ["string", "'C'"],
+ ["char", "'C'"],
["punctuation", ")"],
["punctuation", ";"],
diff --git a/tests/languages/java/string_feature.test b/tests/languages/java/string_feature.test
index 34971f4..1734f1a 100644
--- a/tests/languages/java/string_feature.test
+++ b/tests/languages/java/string_feature.test
@@ -1,3 +1,4 @@
+""
"foo"
"\"foo\""
@@ -20,6 +21,7 @@ String empty = """
----------------------------------------------------
[
+ ["string", "\"\""],
["string", "\"foo\""],
["string", "\"\\\"foo\\\"\""],
diff --git a/tests/languages/scala/char_feature.test b/tests/languages/scala/char_feature.test
new file mode 100644
index 0000000..b409bcf
--- /dev/null
+++ b/tests/languages/scala/char_feature.test
@@ -0,0 +1,13 @@
+'a'
+'\u0041'
+'\n'
+'\t'
+
+----------------------------------------------------
+
+[
+ ["char", "'a'"],
+ ["char", "'\\u0041'"],
+ ["char", "'\\n'"],
+ ["char", "'\\t'"]
+]
diff --git a/tests/languages/scala/string_feature.test b/tests/languages/scala/string_feature.test
index 502625d..75878ba 100644
--- a/tests/languages/scala/string_feature.test
+++ b/tests/languages/scala/string_feature.test
@@ -1,8 +1,3 @@
-'a'
-'\u0041'
-'\n'
-'\t'
-
""
"fo\"obar"
@@ -17,12 +12,9 @@ bar"""
----------------------------------------------------
[
- ["string", "'a'"],
- ["string", "'\\u0041'"],
- ["string", "'\\n'"],
- ["string", "'\\t'"],
["string", "\"\""],
["string", "\"fo\\\"obar\""],
+
["triple-quoted-string", "\"\"\"fo\"o\r\nbar\"\"\""],
["triple-quoted-string", "\"\"\"fo\"o\r\n// comment\r\nbar\"\"\""],
["string", "\"foo /* comment */ bar\""],