summaryrefslogtreecommitdiffstats
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;
span class="mf">0 }, define: { pattern: /^>.+/m, alias: 'tag', inside: { value: { pattern: /(^>\w+[\t ]+)(?!\s)[^{}\r\n]+/, lookbehind: !0, alias: 'operator', }, key: { pattern: /(^>)\w+/, lookbehind: !0 }, }, }, label: { pattern: /^([\t ]*)#[\t ]*\w+[\t ]*$/m, lookbehind: !0, alias: 'regex', }, command: { pattern: /^([\t ]*)@\w+(?=[\t ]|$).*/m, lookbehind: !0, alias: 'function', inside: { 'command-name': /^@\w+/, expression: { pattern: a, greedy: !0, alias: 'selector' }, 'command-params': { pattern: /\s*\S[\s\S]*/, inside: n }, }, }, 'generic-text': { pattern: /(^[ \t]*)[^#@>;\s].*/m, lookbehind: !0, alias: 'punctuation', inside: { 'escaped-char': /\\[{}\[\]"]/, expression: { pattern: a, greedy: !0, alias: 'selector' }, 'inline-command': { pattern: /\[[\t ]*\w[^\r\n\[\]]*\]/, greedy: !0, alias: 'function', inside: { 'command-params': { pattern: /(^\[[\t ]*\w+\b)[\s\S]+(?=\]$)/, lookbehind: !0, inside: n, }, 'command-param-name': { pattern: /^(\[[\t ]*)\w+/, lookbehind: !0, alias: 'name', }, 'start-stop-char': /[\[\]]/, }, }, }, }, }), (e.languages.nani = e.languages.naniscript), e.hooks.add('after-tokenize', function (e) { e.tokens.forEach(function (e) { if ('string' != typeof e && 'generic-text' === e.type) { var a = t(e); (function (e) { for (var a = [], n = 0; n < e.length; n++) { var t = e[n], r = '[]{}'.indexOf(t); if (-1 !== r) if (r % 2 == 0) a.push(r + 1); else if (a.pop() !== r) return !1; } return 0 === a.length; })(a) || ((e.type = 'bad-line'), (e.content = a)); } }); }); })(Prism);