AQL: Differenciate between strings and identifiers (#3183)
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
diff --git a/components/prism-aql.js b/components/prism-aql.js
index 1959299..42868dd 100644
--- a/components/prism-aql.js
+++ b/components/prism-aql.js
@@ -6,7 +6,11 @@ Prism.languages.aql = {
greedy: true
},
'string': {
- pattern: /(["'´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,
+ pattern: /(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/,
+ greedy: true
+ },
+ 'identifier': {
+ pattern: /([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,
greedy: true
},
'variable': /@@?\w+/,
diff --git a/components/prism-aql.min.js b/components/prism-aql.min.js
index 612b347..9ed8597 100644
--- a/components/prism-aql.min.js
+++ b/components/prism-aql.min.js
@@ -1 +1 @@
-Prism.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*\{)/i}],function:/\b(?!\d)\w+(?=\s*\()/,boolean:/\b(?:false|true)\b/i,range:{pattern:/\.\./,alias:"operator"},number:[/\b0b[01]+/i,/\b0x[0-9a-f]+/i,/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i],operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/};
\ No newline at end of file
+Prism.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},identifier:{pattern:/([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*\{)/i}],function:/\b(?!\d)\w+(?=\s*\()/,boolean:/\b(?:false|true)\b/i,range:{pattern:/\.\./,alias:"operator"},number:[/\b0b[01]+/i,/\b0x[0-9a-f]+/i,/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i],operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/};
\ No newline at end of file
diff --git a/tests/languages/aql/identifier_feature.test b/tests/languages/aql/identifier_feature.test
new file mode 100644
index 0000000..664358b
--- /dev/null
+++ b/tests/languages/aql/identifier_feature.test
@@ -0,0 +1,9 @@
+´filter´
+`sort`
+
+----------------------------------------------------
+
+[
+ ["identifier", "´filter´"],
+ ["identifier", "`sort`"]
+]
diff --git a/tests/languages/aql/string_feature.test b/tests/languages/aql/string_feature.test
index 064c0f0..21db276 100644
--- a/tests/languages/aql/string_feature.test
+++ b/tests/languages/aql/string_feature.test
@@ -10,9 +10,6 @@
'this is a longer string.'
'the path separator on Windows is \\'
-´filter´
-`sort`
-
----------------------------------------------------
[
@@ -21,13 +18,12 @@
["string", "\"this is a \\\"quoted\\\" word\""],
["string", "\"this is a longer string.\""],
["string", "\"the path separator on Windows is \\\\\""],
+
["string", "'yikes!'"],
["string", "'don\\'t know'"],
["string", "'this is a \"quoted\" word'"],
["string", "'this is a longer string.'"],
- ["string", "'the path separator on Windows is \\\\'"],
- ["string", "´filter´"],
- ["string", "`sort`"]
+ ["string", "'the path separator on Windows is \\\\'"]
]
----------------------------------------------------