aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-gap.js
blob: b45e95f5da6ab0fc9ba05a40985a720a8358ce65 (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
// https://www.gap-system.org/Manuals/doc/ref/chap4.html
// https://www.gap-system.org/Manuals/doc/ref/chap27.html

Prism.languages.gap = {
  shell: {
    pattern: /^gap>[\s\S]*?(?=^gap>|$(?![\s\S]))/m,
    greedy: true,
    inside: {
      gap: {
        pattern: /^(gap>).+(?:(?:\r(?:\n|(?!\n))|\n)>.*)*/,
        lookbehind: true,
        inside: null, // see below
      },
      punctuation: /^gap>/,
    },
  },

  comment: {
    pattern: /#.*/,
    greedy: true,
  },
  string: {
    pattern:
      /(^|[^\\'"])(?:'(?:[^\r\n\\']|\\.){1,10}'|"(?:[^\r\n\\"]|\\.)*"(?!")|"""[\s\S]*?""")/,
    lookbehind: true,
    greedy: true,
    inside: {
      continuation: {
        pattern: /([\r\n])>/,
        lookbehind: true,
        alias: 'punctuation',
      },
    },
  },

  keyword:
    /\b(?:Assert|Info|IsBound|QUIT|TryNextMethod|Unbind|and|atomic|break|continue|do|elif|else|end|fi|for|function|if|in|local|mod|not|od|or|quit|readonly|readwrite|rec|repeat|return|then|until|while)\b/,
  boolean: /\b(?:false|true)\b/,

  function: /\b[a-z_]\w*(?=\s*\()/i,

  number: {
    pattern:
      /(^|[^\w.]|\.\.)(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:_[a-z]?)?(?=$|[^\w.]|\.\.)/,
    lookbehind: true,
  },

  continuation: {
    pattern: /([\r\n])>/,
    lookbehind: true,
    alias: 'punctuation',
  },
  operator: /->|[-+*/^~=!]|<>|[<>]=?|:=|\.\./,
  punctuation: /[()[\]{},;.:]/,
};

Prism.languages.gap.shell.inside.gap.inside = Prism.languages.gap;