source: node_modules/refractor/lang/pure.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 4.8 KB
RevLine 
[d24f17c]1'use strict'
2
3module.exports = pure
4pure.displayName = 'pure'
5pure.aliases = []
6function pure(Prism) {
7 ;(function (Prism) {
8 // https://agraef.github.io/pure-docs/pure.html#lexical-matters
9 Prism.languages.pure = {
10 comment: [
11 {
12 pattern: /(^|[^\\])\/\*[\s\S]*?\*\//,
13 lookbehind: true
14 },
15 {
16 pattern: /(^|[^\\:])\/\/.*/,
17 lookbehind: true
18 },
19 /#!.+/
20 ],
21 'inline-lang': {
22 pattern: /%<[\s\S]+?%>/,
23 greedy: true,
24 inside: {
25 lang: {
26 pattern: /(^%< *)-\*-.+?-\*-/,
27 lookbehind: true,
28 alias: 'comment'
29 },
30 delimiter: {
31 pattern: /^%<.*|%>$/,
32 alias: 'punctuation'
33 }
34 }
35 },
36 string: {
37 pattern: /"(?:\\.|[^"\\\r\n])*"/,
38 greedy: true
39 },
40 number: {
41 // The look-behind prevents wrong highlighting of the .. operator
42 pattern:
43 /((?:\.\.)?)(?:\b(?:inf|nan)\b|\b0x[\da-f]+|(?:\b(?:0b)?\d+(?:\.\d+)?|\B\.\d+)(?:e[+-]?\d+)?L?)/i,
44 lookbehind: true
45 },
46 keyword:
47 /\b(?:NULL|ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\b/,
48 function:
49 /\b(?:abs|add_(?:addr|constdef|(?:fundef|interface|macdef|typedef)(?:_at)?|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_c?string(?:_pointer)?|byte_(?:matrix|pointer)|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|sentry|short|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\b/,
50 special: {
51 pattern: /\b__[a-z]+__\b/i,
52 alias: 'builtin'
53 },
54 // Any combination of operator chars can be an operator
55 // eslint-disable-next-line no-misleading-character-class
56 operator:
57 /(?:[!"#$%&'*+,\-.\/:<=>?@\\^`|~\u00a1-\u00bf\u00d7-\u00f7\u20d0-\u2bff]|\b_+\b)+|\b(?:and|div|mod|not|or)\b/,
58 // FIXME: How can we prevent | and , to be highlighted as operator when they are used alone?
59 punctuation: /[(){}\[\];,|]/
60 }
61 var inlineLanguages = [
62 'c',
63 {
64 lang: 'c++',
65 alias: 'cpp'
66 },
67 'fortran'
68 ]
69 var inlineLanguageRe = /%< *-\*- *<lang>\d* *-\*-[\s\S]+?%>/.source
70 inlineLanguages.forEach(function (lang) {
71 var alias = lang
72 if (typeof lang !== 'string') {
73 alias = lang.alias
74 lang = lang.lang
75 }
76 if (Prism.languages[alias]) {
77 var o = {}
78 o['inline-lang-' + alias] = {
79 pattern: RegExp(
80 inlineLanguageRe.replace(
81 '<lang>',
82 lang.replace(/([.+*?\/\\(){}\[\]])/g, '\\$1')
83 ),
84 'i'
85 ),
86 inside: Prism.util.clone(Prism.languages.pure['inline-lang'].inside)
87 }
88 o['inline-lang-' + alias].inside.rest = Prism.util.clone(
89 Prism.languages[alias]
90 )
91 Prism.languages.insertBefore('pure', 'inline-lang', o)
92 }
93 }) // C is the default inline language
94 if (Prism.languages.c) {
95 Prism.languages.pure['inline-lang'].inside.rest = Prism.util.clone(
96 Prism.languages.c
97 )
98 }
99 })(Prism)
100}
Note: See TracBrowser for help on using the repository browser.