(function (Prism) { var keywords = /\b(?:(?:after|before)(?=\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\s+sharing)\b/i; var className = /\b(?:(?=[a-z_]\w*\s*[<\[])|(?!))[A-Z_]\w*(?:\s*\.\s*[A-Z_]\w*)*\b(?:\s*(?:\[\s*\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*/.source.replace( //g, function () { return keywords.source; } ); /** @param {string} pattern */ function insertClassName(pattern) { return RegExp( pattern.replace(//g, function () { return className; }), 'i' ); } var classNameInside = { keyword: keywords, punctuation: /[()\[\]{};,:.<>]/, }; Prism.languages.apex = { comment: Prism.languages.clike.comment, string: Prism.languages.clike.string, sql: { pattern: /((?:[=,({:]|\breturn)\s*)\[[^\[\]]*\]/i, lookbehind: true, greedy: true, alias: 'language-sql', inside: Prism.languages.sql, }, annotation: { pattern: /@\w+\b/, alias: 'punctuation', }, 'class-name': [ { pattern: insertClassName( /(\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\s+\w+\s+on)\s+)/ .source ), lookbehind: true, inside: classNameInside, }, { // cast pattern: insertClassName(/(\(\s*)(?=\s*\)\s*[\w(])/.source), lookbehind: true, inside: classNameInside, }, { // variable/parameter declaration and return types pattern: insertClassName(/(?=\s*\w+\s*[;=,(){:])/.source), inside: classNameInside, }, ], trigger: { pattern: /(\btrigger\s+)\w+\b/i, lookbehind: true, alias: 'class-name', }, keyword: keywords, function: /\b[a-z_]\w*(?=\s*\()/i, boolean: /\b(?:false|true)\b/i, number: /(?:\B\.\d+|\b\d+(?:\.\d+|L)?)\b/i, operator: /[!=](?:==?)?|\?\.?|&&|\|\||--|\+\+|[-+*/^&|]=?|:|<{1,3}=?/, punctuation: /[()\[\]{};,.]/, }; })(Prism); 43bddd9506d790ad6707fe71f28a4ecfa635c8f1'>public/prism/prism-shell-session.js
blob: 5674752e616814cb088681f9f57909be76159cfa (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
(function (Prism) {
  // CAREFUL!
  // The following patterns are concatenated, so the group referenced by a back reference is non-obvious!

  var strings = [
    // normal string
    /"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,
    /'[^']*'/.source,
    /\$'(?:[^'\\]|\\[\s\S])*'/.source,

    // here doc
    // 2 capturing groups
    /<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source,
  ].join('|');

  Prism.languages['shell-session'] = {
    command: {
      pattern: RegExp(
        // user info
        /^/.source +
          '(?:' +
          // <user> ":" ( <path> )?
          (/[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/
            .source +
            '|' +
            // <path>
            // Since the path pattern is quite general, we will require it to start with a special character to
            // prevent false positives.
            /[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source) +
          ')?' +
          // shell symbol
          /[$#%](?=\s)/.source +
          // bash command
          /(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<<str>>)+/.source.replace(
            /<<str>>/g,
            function () {
              return strings;
            }
          ),
        'm'
      ),
      greedy: true,
      inside: {
        info: {
          // foo@bar:~/files$ exit
          // foo@bar$ exit
          // ~/files$ exit
          pattern: /^[^#$%]+/,
          alias: 'punctuation',
          inside: {
            user: /^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,
            punctuation: /:/,
            path: /[\s\S]+/,
          },
        },
        bash: {
          pattern: /(^[$#%]\s*)\S[\s\S]*/,
          lookbehind: true,
          alias: 'language-bash',
          inside: Prism.languages.bash,
        },
        'shell-symbol': {
          pattern: /^[$#%]/,
          alias: 'important',
        },
      },
    },
    output: /.(?:.*(?:[\r\n]|.$))*/,
  };

  Prism.languages['sh-session'] = Prism.languages['shellsession'] =
    Prism.languages['shell-session'];
})(Prism);