(function (Prism) { Prism.languages.sass = Prism.languages.extend('css', { // Sass comments don't need to be closed, only indented comment: { pattern: /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m, lookbehind: true, greedy: true, }, }); Prism.languages.insertBefore('sass', 'atrule', { // We want to consume the whole line 'atrule-line': { // Includes support for = and + shortcuts pattern: /^(?:[ \t]*)[@+=].+/m, greedy: true, inside: { atrule: /(?:@[\w-]+|[+=])/, }, }, }); delete Prism.languages.sass.atrule; var variable = /\$[-\w]+|#\{\$[-\w]+\}/; var operator = [ /[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/, { pattern: /(\s)-(?=\s)/, lookbehind: true, }, ]; Prism.languages.insertBefore('sass', 'property', { // We want to consume the whole line 'variable-line': { pattern: /^[ \t]*\$.+/m, greedy: true, inside: { punctuation: /:/, variable: variable, operator: operator, }, }, // We want to consume the whole line 'property-line': { pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m, greedy: true, inside: { property: [ /[^:\s]+(?=\s*:)/, { pattern: /(:)[^:\s]+/, lookbehind: true, }, ], punctuation: /:/, variable: variable, operator: operator, important: Prism.languages.sass.important, }, }, }); delete Prism.languages.sass.property; delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed, // what's left should be selectors Prism.languages.insertBefore('sass', 'punctuation', { selector: { pattern: /^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m, lookbehind: true, greedy: true, }, }); })(Prism); andphilippot.com/stats/public/prism/prism-nim.min.js?h=v1.0.0'>stats
path: root/public/prism/prism-nim.min.js
blob: 0ec8c71934ab0661dd8a72650a0676730d807eae (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
Prism.languages.nim = {
  comment: { pattern: /#.*/, greedy: !0 },
  string: {
    pattern:
      /(?:\b(?!\d)(?:\w|\\x[89a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")/,
    greedy: !0,
  },
  char: { pattern: /'(?:\\(?:\d+|x[\da-fA-F]{0,2}|.)|[^'])'/, greedy: !0 },
  function: {
    pattern:
      /(?:(?!\d)(?:\w|\\x[89a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/,
    greedy: !0,
    inside: { operator: /\*$/ },
  },
  identifier: {
    pattern: /`[^`\r\n]+`/,
    greedy: !0,
    inside: { punctuation: /`/ },
  },
  number:
    /\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/,
  keyword:
    /\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/,
  operator: {
    pattern:
      /(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|in|is|isnot|mod|not|notin|of|or|shl|shr|xor)\b)/m,
    lookbehind: !0,
  },
  punctuation: /[({\[]\.|\.[)}\]]|[`(){}\[\],:]/,
};