aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-firestore-security-rules.js
blob: 79c9e3bdab61c5a5628ebf2a4de8032c7ecb4f6c (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
Prism.languages['firestore-security-rules'] = Prism.languages.extend('clike', {
  comment: /\/\/.*/,
  keyword: /\b(?:allow|function|if|match|null|return|rules_version|service)\b/,
  operator: /&&|\|\||[<>!=]=?|[-+*/%]|\b(?:in|is)\b/,
});

delete Prism.languages['firestore-security-rules']['class-name'];

Prism.languages.insertBefore('firestore-security-rules', 'keyword', {
  path: {
    pattern:
      /(^|[\s(),])(?:\/(?:[\w\xA0-\uFFFF]+|\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)))+/,
    lookbehind: true,
    greedy: true,
    inside: {
      variable: {
        pattern: /\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)/,
        inside: {
          operator: /=/,
          keyword: /\*\*/,
          punctuation: /[.$(){}]/,
        },
      },
      punctuation: /\//,
    },
  },
  method: {
    // to make the pattern shorter, the actual method names are omitted
    pattern: /(\ballow\s+)[a-z]+(?:\s*,\s*[a-z]+)*(?=\s*[:;])/,
    lookbehind: true,
    alias: 'builtin',
    inside: {
      punctuation: /,/,
    },
  },
});