aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-nevod.js
blob: f9eab8dfe39dc6d9e9d1c82cac2370e1b438b663 (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
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
Prism.languages.nevod = {
  comment: /\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,
  string: {
    pattern: /(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,
    greedy: true,
    inside: {
      'string-attrs': /!$|!\*$|\*$/,
    },
  },
  namespace: {
    pattern: /(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*\{)/,
    lookbehind: true,
  },
  pattern: {
    pattern:
      /(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*\(\s*(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:~\s*)?[a-zA-Z0-9\-.]*)*\))?(?=\s*=)/,
    lookbehind: true,
    inside: {
      'pattern-name': {
        pattern: /^#?[a-zA-Z0-9\-.]+/,
        alias: 'class-name',
      },
      fields: {
        pattern: /\(.*\)/,
        inside: {
          'field-name': {
            pattern: /[a-zA-Z0-9\-.]+/,
            alias: 'variable',
          },
          punctuation: /[,()]/,
          operator: {
            pattern: /~/,
            alias: 'field-hidden-mark',
          },
        },
      },
    },
  },
  search: {
    pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,
    alias: 'function',
    lookbehind: true,
  },
  keyword:
    /@(?:having|inside|namespace|outside|pattern|require|search|where)\b/,
  'standard-pattern': {
    pattern:
      /\b(?:Alpha|AlphaNum|Any|Blank|End|LineBreak|Num|NumAlpha|Punct|Space|Start|Symbol|Word|WordBreak)\b(?:\([a-zA-Z0-9\-.,\s+]*\))?/,
    inside: {
      'standard-pattern-name': {
        pattern: /^[a-zA-Z0-9\-.]+/,
        alias: 'builtin',
      },
      quantifier: {
        pattern: /\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,
        alias: 'number',
      },
      'standard-pattern-attr': {
        pattern: /[a-zA-Z0-9\-.]+/,
        alias: 'builtin',
      },
      punctuation: /[,()]/,
    },
  },
  quantifier: {
    pattern: /\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,
    alias: 'number',
  },
  operator: [
    {
      pattern: /=/,
      alias: 'pattern-def',
    },
    {
      pattern: /&/,
      alias: 'conjunction',
    },
    {
      pattern: /~/,
      alias: 'exception',
    },
    {
      pattern: /\?/,
      alias: 'optionality',
    },
    {
      pattern: /[[\]]/,
      alias: 'repetition',
    },
    {
      pattern: /[{}]/,
      alias: 'variation',
    },
    {
      pattern: /[+_]/,
      alias: 'sequence',
    },
    {
      pattern: /\.{2,3}/,
      alias: 'span',
    },
  ],
  'field-capture': [
    {
      pattern:
        /([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,
      lookbehind: true,
      inside: {
        'field-name': {
          pattern: /[a-zA-Z0-9\-.]+/,
          alias: 'variable',
        },
        colon: /:/,
      },
    },
    {
      pattern: /[a-zA-Z0-9\-.]+\s*:/,
      inside: {
        'field-name': {
          pattern: /[a-zA-Z0-9\-.]+/,
          alias: 'variable',
        },
        colon: /:/,
      },
    },
  ],
  punctuation: /[:;,()]/,
  name: /[a-zA-Z0-9\-.]+/,
};