aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-cypher.js
blob: 72360bf00db5d150a740a476f3c2af9aef0fd2f0 (plain)
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
Prism.languages.cypher = {
  // https://neo4j.com/docs/cypher-manual/current/syntax/comments/
  comment: /\/\/.*/,
  string: {
    pattern: /"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/,
    greedy: true,
  },
  'class-name': {
    pattern: /(:\s*)(?:\w+|`(?:[^`\\\r\n])*`)(?=\s*[{):])/,
    lookbehind: true,
    greedy: true,
  },
  relationship: {
    pattern:
      /(-\[\s*(?:\w+\s*|`(?:[^`\\\r\n])*`\s*)?:\s*|\|\s*:\s*)(?:\w+|`(?:[^`\\\r\n])*`)/,
    lookbehind: true,
    greedy: true,
    alias: 'property',
  },
  identifier: {
    pattern: /`(?:[^`\\\r\n])*`/,
    greedy: true,
  },

  variable: /\$\w+/,

  // https://neo4j.com/docs/cypher-manual/current/syntax/reserved/
  keyword:
    /\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\b/i,

  function: /\b\w+\b(?=\s*\()/,

  boolean: /\b(?:false|null|true)\b/i,
  number: /\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)\b/,
  // https://neo4j.com/docs/cypher-manual/current/syntax/operators/
  operator: /:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\.\.\.?/,
  punctuation: /[()[\]{},;.]/,
};