source: node_modules/refractor/lang/pascaligo.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: 2.5 KB
Line 
1'use strict'
2
3module.exports = pascaligo
4pascaligo.displayName = 'pascaligo'
5pascaligo.aliases = []
6function pascaligo(Prism) {
7 ;(function (Prism) {
8 // Pascaligo is a layer 2 smart contract language for the tezos blockchain
9 var braces = /\((?:[^()]|\((?:[^()]|\([^()]*\))*\))*\)/.source
10 var type = /(?:\b\w+(?:<braces>)?|<braces>)/.source.replace(
11 /<braces>/g,
12 function () {
13 return braces
14 }
15 )
16 var pascaligo = (Prism.languages.pascaligo = {
17 comment: /\(\*[\s\S]+?\*\)|\/\/.*/,
18 string: {
19 pattern: /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1|\^[a-z]/i,
20 greedy: true
21 },
22 'class-name': [
23 {
24 pattern: RegExp(
25 /(\btype\s+\w+\s+is\s+)<type>/.source.replace(
26 /<type>/g,
27 function () {
28 return type
29 }
30 ),
31 'i'
32 ),
33 lookbehind: true,
34 inside: null // see below
35 },
36 {
37 pattern: RegExp(
38 /<type>(?=\s+is\b)/.source.replace(/<type>/g, function () {
39 return type
40 }),
41 'i'
42 ),
43 inside: null // see below
44 },
45 {
46 pattern: RegExp(
47 /(:\s*)<type>/.source.replace(/<type>/g, function () {
48 return type
49 })
50 ),
51 lookbehind: true,
52 inside: null // see below
53 }
54 ],
55 keyword: {
56 pattern:
57 /(^|[^&])\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\b/i,
58 lookbehind: true
59 },
60 boolean: {
61 pattern: /(^|[^&])\b(?:False|True)\b/i,
62 lookbehind: true
63 },
64 builtin: {
65 pattern: /(^|[^&])\b(?:bool|int|list|map|nat|record|string|unit)\b/i,
66 lookbehind: true
67 },
68 function: /\b\w+(?=\s*\()/,
69 number: [
70 // Hexadecimal, octal and binary
71 /%[01]+|&[0-7]+|\$[a-f\d]+/i, // Decimal
72 /\b\d+(?:\.\d+)?(?:e[+-]?\d+)?(?:mtz|n)?/i
73 ],
74 operator:
75 /->|=\/=|\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=|]|\b(?:and|mod|or)\b/,
76 punctuation: /\(\.|\.\)|[()\[\]:;,.{}]/
77 })
78 var classNameInside = [
79 'comment',
80 'keyword',
81 'builtin',
82 'operator',
83 'punctuation'
84 ].reduce(function (accum, key) {
85 accum[key] = pascaligo[key]
86 return accum
87 }, {})
88 pascaligo['class-name'].forEach(function (p) {
89 p.inside = classNameInside
90 })
91 })(Prism)
92}
Note: See TracBrowser for help on using the repository browser.