utopia-project 0.37.6 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/context/documentation-guidelines.md +12 -7
  4. data/lib/utopia/project/import_map.rb +1 -0
  5. data/lib/utopia/project/version.rb +1 -1
  6. data/pages/_page.xnode +8 -13
  7. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +293 -0
  8. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  9. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  10. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  11. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  12. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  13. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  14. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  15. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  16. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  17. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  18. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  19. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  53. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  54. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  55. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  56. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  57. data/public/_components/@socketry/syntax/license.md +21 -0
  58. data/public/_components/@socketry/syntax/package.json +43 -0
  59. data/public/_components/@socketry/syntax/readme.md +162 -0
  60. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  61. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  62. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  63. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  64. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  65. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  66. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  67. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  68. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  69. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  70. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  71. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  72. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  73. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  74. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  75. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  76. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  77. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  78. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  79. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  80. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  81. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  82. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  83. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  84. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  85. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  86. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  87. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  88. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  89. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  90. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  91. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  92. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  93. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  94. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  95. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  96. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  97. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  98. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  99. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  100. data/public/_static/sidebar.js +55 -22
  101. data/public/_static/site.css +0 -4
  102. data.tar.gz.sig +0 -0
  103. metadata +94 -1
  104. metadata.gz.sig +0 -0
@@ -0,0 +1,225 @@
1
+ // This brush is based loosely on the following documentation:
2
+ // http://msdn.microsoft.com/en-us/library/dd233230.aspx
3
+
4
+ import {Language} from '../Language.js';
5
+ import {Rule} from '../Rule.js';
6
+
7
+ const language = new Language('ocaml');
8
+
9
+ const keywords = [
10
+ 'abstract',
11
+ 'and',
12
+ 'as',
13
+ 'assert',
14
+ 'begin',
15
+ 'class',
16
+ 'default',
17
+ 'delegate',
18
+ 'do',
19
+ 'done',
20
+ 'downcast',
21
+ 'downto',
22
+ 'elif',
23
+ 'else',
24
+ 'end',
25
+ 'exception',
26
+ 'extern',
27
+ 'finally',
28
+ 'for',
29
+ 'fun',
30
+ 'function',
31
+ 'if',
32
+ 'in',
33
+ 'inherit',
34
+ 'inline',
35
+ 'interface',
36
+ 'internal',
37
+ 'lazy',
38
+ 'let',
39
+ 'match',
40
+ 'member',
41
+ 'module',
42
+ 'mutable',
43
+ 'namespace',
44
+ 'new',
45
+ 'null',
46
+ 'of',
47
+ 'open',
48
+ 'or',
49
+ 'override',
50
+ 'rec',
51
+ 'return',
52
+ 'static',
53
+ 'struct',
54
+ 'then',
55
+ 'to',
56
+ 'try',
57
+ 'type',
58
+ 'upcast',
59
+ 'use',
60
+ 'val',
61
+ 'when',
62
+ 'while',
63
+ 'with',
64
+ 'yield',
65
+ 'asr',
66
+ 'land',
67
+ 'lor',
68
+ 'lsl',
69
+ 'lsr',
70
+ 'lxor',
71
+ 'mod',
72
+ 'sig',
73
+ 'atomic',
74
+ 'break',
75
+ 'checked',
76
+ 'component',
77
+ 'const',
78
+ 'constraint',
79
+ 'constructor',
80
+ 'continue',
81
+ 'eager',
82
+ 'event',
83
+ 'external',
84
+ 'fixed',
85
+ 'functor',
86
+ 'global',
87
+ 'include',
88
+ 'method',
89
+ 'mixin',
90
+ 'object',
91
+ 'parallel',
92
+ 'process',
93
+ 'protected',
94
+ 'pure',
95
+ 'sealed',
96
+ 'trait',
97
+ 'virtual',
98
+ 'volatile'
99
+ ];
100
+
101
+ const types = [
102
+ 'bool',
103
+ 'byte',
104
+ 'sbyte',
105
+ /\bu?int\d*\b/,
106
+ 'nativeint',
107
+ 'unativeint',
108
+ 'char',
109
+ 'string',
110
+ 'decimal',
111
+ 'unit',
112
+ 'void',
113
+ 'float32',
114
+ 'single',
115
+ 'float64',
116
+ 'double',
117
+ 'list',
118
+ 'array',
119
+ 'exn',
120
+ 'format',
121
+ 'fun',
122
+ 'option',
123
+ 'ref'
124
+ ];
125
+
126
+ const operators = [
127
+ ':?>',
128
+ '<>',
129
+ '->',
130
+ '::',
131
+ ':=',
132
+ ':>',
133
+ ':?',
134
+ '[<',
135
+ '>]',
136
+ '<|',
137
+ '|>',
138
+ '[|',
139
+ '|]',
140
+ '(|',
141
+ '|)',
142
+ '(*',
143
+ '*)',
144
+ '!',
145
+ '%',
146
+ '&',
147
+ '*',
148
+ '+',
149
+ '-',
150
+ '/',
151
+ '<',
152
+ '=',
153
+ '>',
154
+ '?',
155
+ '@',
156
+ '^',
157
+ '_',
158
+ '`',
159
+ '|',
160
+ '~',
161
+ "'",
162
+ 'in'
163
+ ];
164
+
165
+ const values = ['true', 'false'];
166
+
167
+ const access = ['private', 'public'];
168
+
169
+ language.push(access, {type: 'access'});
170
+ language.push(values, {type: 'constant'});
171
+ language.push(types, {type: 'type'});
172
+ language.push(keywords, {type: 'keyword'});
173
+ language.push(operators, {type: 'operator'});
174
+
175
+ // http://caml.inria.fr/pub/docs/manual-ocaml/manual011.html#module-path
176
+ // open [module-path], new [type]
177
+ language.push({
178
+ pattern: /(?:open|new)\s+((?:\.?[a-z][a-z0-9]*)+)/i,
179
+ matches: Rule.extractMatches({type: 'type'})
180
+ });
181
+
182
+ // Functions
183
+ language.push({
184
+ pattern: /(?:\.)([a-z_][a-z0-9_]+)/i,
185
+ matches: Rule.extractMatches({type: 'function'})
186
+ });
187
+
188
+ // Avoid highlighting keyword arguments as camel-case types.
189
+ language.push({
190
+ pattern: /(?:\(|,)\s*(\w+\s*=)/,
191
+ matches: Rule.extractMatches({
192
+ type: 'keyword-argument'
193
+ })
194
+ });
195
+
196
+ // We need to modify cStyleFunction because "(*" is a comment token.
197
+ language.push({
198
+ pattern: /([a-z_][a-z0-9_]*)\s*\((?!\*)/i,
199
+ matches: Rule.extractMatches({type: 'function'})
200
+ });
201
+
202
+ // Types
203
+ language.push(Rule.camelCaseType);
204
+
205
+ // Web Links
206
+ language.push(Rule.webLink);
207
+
208
+ // Comments
209
+ language.push({
210
+ pattern: /\(\*[\s\S]*?\*\)/,
211
+ type: 'comment'
212
+ });
213
+
214
+ // Strings
215
+ language.push(Rule.doubleQuotedString);
216
+ language.push(Rule.stringEscape);
217
+
218
+ // Numbers
219
+ language.push(Rule.decimalNumber);
220
+ language.push(Rule.hexNumber);
221
+
222
+ export default function register(syntax) {
223
+ syntax.register('ocaml', language);
224
+ syntax.alias('ocaml', ['ml', 'sml', 'fsharp']);
225
+ }
@@ -0,0 +1,166 @@
1
+ //
2
+ // Constructed using information from http://pascal.comsci.us/etymology/
3
+ //
4
+
5
+ import {Language} from '../Language.js';
6
+ import {Rule} from '../Rule.js';
7
+
8
+ const language = new Language('pascal');
9
+
10
+ const keywords = [
11
+ 'absolute',
12
+ 'abstract',
13
+ 'all',
14
+ 'and_then',
15
+ 'as',
16
+ 'asm',
17
+ 'asmname',
18
+ 'attribute',
19
+ 'begin',
20
+ 'bindable',
21
+ 'c',
22
+ 'c_language',
23
+ 'case',
24
+ 'class',
25
+ 'const',
26
+ 'constructor',
27
+ 'destructor',
28
+ 'dispose',
29
+ 'do',
30
+ 'downto',
31
+ 'else',
32
+ 'end',
33
+ 'except',
34
+ 'exit',
35
+ 'export',
36
+ 'exports',
37
+ 'external',
38
+ 'far',
39
+ 'file',
40
+ 'finalization',
41
+ 'finally',
42
+ 'for',
43
+ 'forward',
44
+ 'function',
45
+ 'goto',
46
+ 'if',
47
+ 'implementation',
48
+ 'import',
49
+ 'inherited',
50
+ 'initialization',
51
+ 'inline',
52
+ 'interface',
53
+ 'interrupt',
54
+ 'is',
55
+ 'keywords',
56
+ 'label',
57
+ 'library',
58
+ 'module',
59
+ 'name',
60
+ 'near',
61
+ 'new',
62
+ 'object',
63
+ 'of',
64
+ 'on',
65
+ 'only',
66
+ 'operator',
67
+ 'or_else',
68
+ 'otherwise',
69
+ 'packed',
70
+ 'pascal',
71
+ 'pow',
72
+ 'private',
73
+ 'procedure',
74
+ 'program',
75
+ 'property',
76
+ 'protected',
77
+ 'public',
78
+ 'published',
79
+ 'qualified',
80
+ 'raise',
81
+ 'record',
82
+ 'repeat',
83
+ 'resident',
84
+ 'restricted',
85
+ 'segment',
86
+ 'set',
87
+ 'then',
88
+ 'threadvar',
89
+ 'to',
90
+ 'try',
91
+ 'type',
92
+ 'unit',
93
+ 'until',
94
+ 'uses',
95
+ 'value',
96
+ 'var',
97
+ 'view',
98
+ 'virtual',
99
+ 'while',
100
+ 'with'
101
+ ];
102
+
103
+ const operators = [
104
+ ':=',
105
+ '>=',
106
+ '<=',
107
+ '<>',
108
+ '+',
109
+ '-',
110
+ '*',
111
+ '/',
112
+ 'div',
113
+ 'mod',
114
+ 'and',
115
+ 'or',
116
+ 'xor',
117
+ 'shl',
118
+ 'shr',
119
+ 'not',
120
+ '=',
121
+ '>',
122
+ '<',
123
+ 'in'
124
+ ];
125
+
126
+ const values = ['true', 'false', 'nil'];
127
+
128
+ // Keywords are case insensitive
129
+ language.push(values, {type: 'constant', options: 'gi'});
130
+ language.push(keywords, {type: 'keyword', options: 'gi'});
131
+ language.push(operators, {type: 'operator', options: 'gi'});
132
+
133
+ language.push(Rule.camelCaseType);
134
+
135
+ // Pascal style comments
136
+ language.push({
137
+ pattern: /\{[\s\S]*?\}/m,
138
+ type: 'comment',
139
+ allow: ['href']
140
+ });
141
+
142
+ language.push({
143
+ pattern: /\(\*[\s\S]*?\*\)/m,
144
+ type: 'comment',
145
+ allow: ['href']
146
+ });
147
+
148
+ language.push(Rule.webLink);
149
+
150
+ // Strings
151
+ language.push(Rule.singleQuotedString);
152
+ language.push(Rule.doubleQuotedString);
153
+ language.push(Rule.stringEscape);
154
+
155
+ // Numbers
156
+ language.push(Rule.decimalNumber);
157
+ // Pascal hex numbers use $ prefix
158
+ language.push({pattern: /\$[0-9a-fA-F]+/, type: 'constant'});
159
+
160
+ // Functions
161
+ language.push(Rule.cStyleFunction);
162
+
163
+ export default function register(syntax) {
164
+ syntax.register('pascal', language);
165
+ syntax.alias('pascal', ['delphi']);
166
+ }
@@ -0,0 +1,2 @@
1
+ // Alias for diff language
2
+ export {default} from './diff.js';
@@ -0,0 +1,317 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('perl5');
5
+
6
+ const builtins = [
7
+ 'abs',
8
+ 'accept',
9
+ 'alarm',
10
+ 'atan2',
11
+ 'bind',
12
+ 'binmode',
13
+ 'chdir',
14
+ 'chmod',
15
+ 'chomp',
16
+ 'chop',
17
+ 'chown',
18
+ 'chr',
19
+ 'chroot',
20
+ 'close',
21
+ 'closedir',
22
+ 'connect',
23
+ 'cos',
24
+ 'crypt',
25
+ 'defined',
26
+ 'delete',
27
+ 'each',
28
+ 'endgrent',
29
+ 'endhostent',
30
+ 'endnetent',
31
+ 'endprotoent',
32
+ 'endpwent',
33
+ 'endservent',
34
+ 'eof',
35
+ 'exec',
36
+ 'exists',
37
+ 'exp',
38
+ 'fcntl',
39
+ 'fileno',
40
+ 'flock',
41
+ 'fork',
42
+ 'format',
43
+ 'formline',
44
+ 'getc',
45
+ 'getgrent',
46
+ 'getgrgid',
47
+ 'getgrnam',
48
+ 'gethostbyaddr',
49
+ 'gethostbyname',
50
+ 'gethostent',
51
+ 'getlogin',
52
+ 'getnetbyaddr',
53
+ 'getnetbyname',
54
+ 'getnetent',
55
+ 'getpeername',
56
+ 'getpgrp',
57
+ 'getppid',
58
+ 'getpriority',
59
+ 'getprotobyname',
60
+ 'getprotobynumber',
61
+ 'getprotoent',
62
+ 'getpwent',
63
+ 'getpwnam',
64
+ 'getpwuid',
65
+ 'getservbyname',
66
+ 'getservbyport',
67
+ 'getservent',
68
+ 'getsockname',
69
+ 'getsockopt',
70
+ 'glob',
71
+ 'gmtime',
72
+ 'grep',
73
+ 'hex',
74
+ 'index',
75
+ 'int',
76
+ 'ioctl',
77
+ 'join',
78
+ 'keys',
79
+ 'kill',
80
+ 'lc',
81
+ 'lcfirst',
82
+ 'length',
83
+ 'link',
84
+ 'listen',
85
+ 'localtime',
86
+ 'lock',
87
+ 'log',
88
+ 'lstat',
89
+ 'map',
90
+ 'mkdir',
91
+ 'msgctl',
92
+ 'msgget',
93
+ 'msgrcv',
94
+ 'msgsnd',
95
+ 'oct',
96
+ 'open',
97
+ 'opendir',
98
+ 'ord',
99
+ 'pack',
100
+ 'pipe',
101
+ 'pop',
102
+ 'pos',
103
+ 'print',
104
+ 'printf',
105
+ 'prototype',
106
+ 'push',
107
+ 'quotemeta',
108
+ 'rand',
109
+ 'read',
110
+ 'readdir',
111
+ 'readline',
112
+ 'readlink',
113
+ 'readpipe',
114
+ 'recv',
115
+ 'rename',
116
+ 'reset',
117
+ 'reverse',
118
+ 'rewinddir',
119
+ 'rindex',
120
+ 'rmdir',
121
+ 'scalar',
122
+ 'seek',
123
+ 'seekdir',
124
+ 'select',
125
+ 'semctl',
126
+ 'semget',
127
+ 'semop',
128
+ 'send',
129
+ 'setgrent',
130
+ 'sethostent',
131
+ 'setnetent',
132
+ 'setpgrp',
133
+ 'setpriority',
134
+ 'setprotoent',
135
+ 'setpwent',
136
+ 'setservent',
137
+ 'setsockopt',
138
+ 'shift',
139
+ 'shmctl',
140
+ 'shmget',
141
+ 'shmread',
142
+ 'shmwrite',
143
+ 'shutdown',
144
+ 'sin',
145
+ 'sleep',
146
+ 'socket',
147
+ 'socketpair',
148
+ 'sort',
149
+ 'splice',
150
+ 'split',
151
+ 'sprintf',
152
+ 'sqrt',
153
+ 'srand',
154
+ 'stat',
155
+ 'study',
156
+ 'substr',
157
+ 'symlink',
158
+ 'syscall',
159
+ 'sysopen',
160
+ 'sysread',
161
+ 'sysseek',
162
+ 'system',
163
+ 'syswrite',
164
+ 'tell',
165
+ 'telldir',
166
+ 'time',
167
+ 'times',
168
+ 'tr',
169
+ 'truncate',
170
+ 'uc',
171
+ 'ucfirst',
172
+ 'umask',
173
+ 'undef',
174
+ 'unlink',
175
+ 'unpack',
176
+ 'unshift',
177
+ 'utime',
178
+ 'values',
179
+ 'vec',
180
+ 'wait',
181
+ 'waitpid',
182
+ 'warn',
183
+ 'write'
184
+ ];
185
+
186
+ const keywords = [
187
+ 'bless',
188
+ 'caller',
189
+ 'continue',
190
+ 'die',
191
+ 'do',
192
+ 'dump',
193
+ 'else',
194
+ 'elsif',
195
+ 'eval',
196
+ 'exit',
197
+ 'for',
198
+ 'foreach',
199
+ 'goto',
200
+ 'if',
201
+ 'import',
202
+ 'last',
203
+ 'local',
204
+ 'my',
205
+ 'next',
206
+ 'no',
207
+ 'our',
208
+ 'package',
209
+ 'redo',
210
+ 'ref',
211
+ 'require',
212
+ 'return',
213
+ 'sub',
214
+ 'tie',
215
+ 'tied',
216
+ 'unless',
217
+ 'untie',
218
+ 'until',
219
+ 'use',
220
+ 'wantarray',
221
+ 'while'
222
+ ];
223
+
224
+ const operators = [
225
+ '<=>',
226
+ '...',
227
+ '->',
228
+ '++',
229
+ '--',
230
+ '**',
231
+ '=~',
232
+ '!~',
233
+ '<<',
234
+ '>>',
235
+ '<=',
236
+ '>=',
237
+ '==',
238
+ '!=',
239
+ '&&',
240
+ '||',
241
+ '//',
242
+ '..',
243
+ '=>',
244
+ '!',
245
+ '~',
246
+ '\\',
247
+ '+',
248
+ '-',
249
+ '*',
250
+ '/',
251
+ '%',
252
+ 'x',
253
+ '.',
254
+ '<',
255
+ '>',
256
+ 'lt',
257
+ 'gt',
258
+ 'le',
259
+ 'ge',
260
+ 'eq',
261
+ 'ne',
262
+ 'cmp',
263
+ '~~',
264
+ '&',
265
+ '|',
266
+ '^',
267
+ '?:',
268
+ '=',
269
+ ',',
270
+ 'not',
271
+ 'and',
272
+ 'or',
273
+ 'xor'
274
+ ];
275
+
276
+ const values = ['this', 'true', 'false'];
277
+
278
+ language.push(values, {type: 'constant'});
279
+ language.push(keywords, {type: 'keyword'});
280
+ language.push(operators, {type: 'operator'});
281
+ language.push(builtins, {type: 'function'});
282
+
283
+ // Regular expressions
284
+ language.push(Rule.perlStyleRegularExpression);
285
+
286
+ // Comments
287
+ language.push(Rule.perlStyleComment);
288
+ language.push(Rule.webLink);
289
+
290
+ // Variables
291
+ language.push({
292
+ pattern: /(\$|@|%)\w+/i,
293
+ type: 'variable'
294
+ });
295
+
296
+ // Enddoc
297
+ language.push({
298
+ pattern: /__END__[\s\S]*/m,
299
+ type: 'comment'
300
+ });
301
+
302
+ // Strings
303
+ language.push(Rule.singleQuotedString);
304
+ language.push(Rule.doubleQuotedString);
305
+ language.push(Rule.stringEscape);
306
+
307
+ // Numbers
308
+ language.push(Rule.decimalNumber);
309
+ language.push(Rule.hexNumber);
310
+
311
+ // Functions
312
+ language.push(Rule.cStyleFunction);
313
+
314
+ export default function register(syntax) {
315
+ syntax.register('perl5', language);
316
+ syntax.alias('perl5', ['perl', 'pl']);
317
+ }