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,166 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('csharp');
5
+
6
+ var keywords = [
7
+ 'abstract',
8
+ 'add',
9
+ 'alias',
10
+ 'ascending',
11
+ 'base',
12
+ 'break',
13
+ 'case',
14
+ 'catch',
15
+ 'class',
16
+ 'const',
17
+ 'continue',
18
+ 'default',
19
+ 'delegate',
20
+ 'descending',
21
+ 'do',
22
+ 'dynamic',
23
+ 'else',
24
+ 'enum',
25
+ 'event',
26
+ 'explicit',
27
+ 'extern',
28
+ 'finally',
29
+ 'for',
30
+ 'foreach',
31
+ 'from',
32
+ 'get',
33
+ 'global',
34
+ 'goto',
35
+ 'group',
36
+ 'if',
37
+ 'implicit',
38
+ 'in',
39
+ 'interface',
40
+ 'into',
41
+ 'join',
42
+ 'let',
43
+ 'lock',
44
+ 'namespace',
45
+ 'new',
46
+ 'operator',
47
+ 'orderby',
48
+ 'out',
49
+ 'override',
50
+ 'params',
51
+ 'partial',
52
+ 'readonly',
53
+ 'ref',
54
+ 'remove',
55
+ 'return',
56
+ 'sealed',
57
+ 'select',
58
+ 'set',
59
+ 'stackalloc',
60
+ 'static',
61
+ 'struct',
62
+ 'switch',
63
+ 'throw',
64
+ 'try',
65
+ 'unsafe',
66
+ 'using',
67
+ 'value',
68
+ 'var',
69
+ 'virtual',
70
+ 'volatile',
71
+ 'where',
72
+ 'while',
73
+ 'yield'
74
+ ];
75
+
76
+ var access = ['public', 'private', 'internal', 'protected'];
77
+
78
+ var types = [
79
+ 'object',
80
+ 'bool',
81
+ 'byte',
82
+ 'fixed',
83
+ 'float',
84
+ 'uint',
85
+ 'char',
86
+ 'ulong',
87
+ 'ushort',
88
+ 'decimal',
89
+ 'int',
90
+ 'sbyte',
91
+ 'short',
92
+ 'void',
93
+ 'long',
94
+ 'string',
95
+ 'double'
96
+ ];
97
+
98
+ var operators = [
99
+ '+',
100
+ '-',
101
+ '*',
102
+ '/',
103
+ '%',
104
+ '&',
105
+ '|',
106
+ '^',
107
+ '!',
108
+ '~',
109
+ '&&',
110
+ '||',
111
+ '++',
112
+ '--',
113
+ '<<',
114
+ '>>',
115
+ '==',
116
+ '!=',
117
+ '<',
118
+ '>',
119
+ '<=',
120
+ '>=',
121
+ '=',
122
+ '?',
123
+ 'new',
124
+ 'as',
125
+ 'is',
126
+ 'sizeof',
127
+ 'typeof',
128
+ 'checked',
129
+ 'unchecked'
130
+ ];
131
+
132
+ var values = ['this', 'true', 'false', 'null'];
133
+
134
+ language.push(values, {type: 'constant'});
135
+ language.push(types, {type: 'type'});
136
+ language.push(keywords, {type: 'keyword'});
137
+ language.push(operators, {type: 'operator'});
138
+ language.push(access, {type: 'access'});
139
+
140
+ // Functions
141
+ language.push(Rule.cStyleFunction);
142
+ language.push({
143
+ pattern: /(?:\.)([a-z_][a-z0-9_]+)/i,
144
+ matches: Rule.extractMatches({type: 'function'})
145
+ });
146
+
147
+ // Camel Case Types
148
+ language.push(Rule.camelCaseType);
149
+
150
+ // Comments
151
+ language.push(Rule.cStyleComment);
152
+ language.push(Rule.cppStyleComment);
153
+ language.push(Rule.webLink);
154
+
155
+ // Strings
156
+ language.push(Rule.singleQuotedString);
157
+ language.push(Rule.doubleQuotedString);
158
+ language.push(Rule.stringEscape);
159
+
160
+ language.push(Rule.decimalNumber);
161
+ language.push(Rule.hexNumber);
162
+
163
+ export default function register(syntax) {
164
+ syntax.register('csharp', language);
165
+ syntax.alias('csharp', ['c-sharp', 'c#']);
166
+ }
@@ -0,0 +1,244 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('css');
5
+
6
+ var colorNames = [
7
+ 'AliceBlue',
8
+ 'AntiqueWhite',
9
+ 'Aqua',
10
+ 'Aquamarine',
11
+ 'Azure',
12
+ 'Beige',
13
+ 'Bisque',
14
+ 'Black',
15
+ 'BlanchedAlmond',
16
+ 'Blue',
17
+ 'BlueViolet',
18
+ 'Brown',
19
+ 'BurlyWood',
20
+ 'CadetBlue',
21
+ 'Chartreuse',
22
+ 'Chocolate',
23
+ 'Coral',
24
+ 'CornflowerBlue',
25
+ 'Cornsilk',
26
+ 'Crimson',
27
+ 'Cyan',
28
+ 'DarkBlue',
29
+ 'DarkCyan',
30
+ 'DarkGoldenRod',
31
+ 'DarkGray',
32
+ 'DarkGreen',
33
+ 'DarkKhaki',
34
+ 'DarkMagenta',
35
+ 'DarkOliveGreen',
36
+ 'Darkorange',
37
+ 'DarkOrchid',
38
+ 'DarkRed',
39
+ 'DarkSalmon',
40
+ 'DarkSeaGreen',
41
+ 'DarkSlateBlue',
42
+ 'DarkSlateGray',
43
+ 'DarkTurquoise',
44
+ 'DarkViolet',
45
+ 'DeepPink',
46
+ 'DeepSkyBlue',
47
+ 'DimGray',
48
+ 'DodgerBlue',
49
+ 'FireBrick',
50
+ 'FloralWhite',
51
+ 'ForestGreen',
52
+ 'Fuchsia',
53
+ 'Gainsboro',
54
+ 'GhostWhite',
55
+ 'Gold',
56
+ 'GoldenRod',
57
+ 'Gray',
58
+ 'Green',
59
+ 'GreenYellow',
60
+ 'HoneyDew',
61
+ 'HotPink',
62
+ 'IndianRed',
63
+ 'Indigo',
64
+ 'Ivory',
65
+ 'Khaki',
66
+ 'Lavender',
67
+ 'LavenderBlush',
68
+ 'LawnGreen',
69
+ 'LemonChiffon',
70
+ 'LightBlue',
71
+ 'LightCoral',
72
+ 'LightCyan',
73
+ 'LightGoldenRodYellow',
74
+ 'LightGrey',
75
+ 'LightGreen',
76
+ 'LightPink',
77
+ 'LightSalmon',
78
+ 'LightSeaGreen',
79
+ 'LightSkyBlue',
80
+ 'LightSlateGray',
81
+ 'LightSteelBlue',
82
+ 'LightYellow',
83
+ 'Lime',
84
+ 'LimeGreen',
85
+ 'Linen',
86
+ 'Magenta',
87
+ 'Maroon',
88
+ 'MediumAquaMarine',
89
+ 'MediumBlue',
90
+ 'MediumOrchid',
91
+ 'MediumPurple',
92
+ 'MediumSeaGreen',
93
+ 'MediumSlateBlue',
94
+ 'MediumSpringGreen',
95
+ 'MediumTurquoise',
96
+ 'MediumVioletRed',
97
+ 'MidnightBlue',
98
+ 'MintCream',
99
+ 'MistyRose',
100
+ 'Moccasin',
101
+ 'NavajoWhite',
102
+ 'Navy',
103
+ 'OldLace',
104
+ 'Olive',
105
+ 'OliveDrab',
106
+ 'Orange',
107
+ 'OrangeRed',
108
+ 'Orchid',
109
+ 'PaleGoldenRod',
110
+ 'PaleGreen',
111
+ 'PaleTurquoise',
112
+ 'PaleVioletRed',
113
+ 'PapayaWhip',
114
+ 'PeachPuff',
115
+ 'Peru',
116
+ 'Pink',
117
+ 'Plum',
118
+ 'PowderBlue',
119
+ 'Purple',
120
+ 'Red',
121
+ 'RosyBrown',
122
+ 'RoyalBlue',
123
+ 'SaddleBrown',
124
+ 'Salmon',
125
+ 'SandyBrown',
126
+ 'SeaGreen',
127
+ 'SeaShell',
128
+ 'Sienna',
129
+ 'Silver',
130
+ 'SkyBlue',
131
+ 'SlateBlue',
132
+ 'SlateGray',
133
+ 'Snow',
134
+ 'SpringGreen',
135
+ 'SteelBlue',
136
+ 'Tan',
137
+ 'Teal',
138
+ 'Thistle',
139
+ 'Tomato',
140
+ 'Turquoise',
141
+ 'Violet',
142
+ 'Wheat',
143
+ 'White',
144
+ 'WhiteSmoke',
145
+ 'Yellow',
146
+ 'YellowGreen'
147
+ ];
148
+
149
+ var colorPatterns = ['#[0-9a-f]{3,6}', 'rgba?\\(.+?\\)', 'hsla?\\(.+?\\)'];
150
+
151
+ // Helper function to escape regex special characters
152
+ function escapeRegex(str) {
153
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
154
+ }
155
+
156
+ // Helper function to convert string to token pattern
157
+ function convertStringToTokenPattern(pattern, caseSensitive) {
158
+ if (caseSensitive) {
159
+ return escapeRegex(pattern);
160
+ }
161
+ return pattern;
162
+ }
163
+
164
+ var colorMatcher = [].concat(
165
+ colorNames.map(function (pattern) {
166
+ return '(' + convertStringToTokenPattern(pattern, true) + ')';
167
+ }),
168
+ colorPatterns.map(function (pattern) {
169
+ return '(' + convertStringToTokenPattern(pattern, false) + ')';
170
+ })
171
+ );
172
+
173
+ language.push({
174
+ pattern: /\(.*?\)/,
175
+ allow: '*',
176
+ disallow: ['property']
177
+ });
178
+
179
+ language.push({
180
+ pattern: /\s*([\:\.\[\]\"\'\=\s\w#\.\-,]+)\s+\{/m,
181
+ matches: Rule.extractMatches({type: 'selector', allow: ['string']})
182
+ });
183
+
184
+ language.push({
185
+ pattern: new RegExp(colorMatcher.join('|'), 'gi'),
186
+ type: 'color',
187
+ process: function (element, match) {
188
+ if (!element.textContent) return element;
189
+
190
+ var text = element.textContent;
191
+
192
+ // Create color box container
193
+ var colourBox = document.createElement('span');
194
+ colourBox.className = 'colour-box';
195
+
196
+ // Create sample color element
197
+ var sampleColour = document.createElement('span');
198
+ sampleColour.className = 'sample';
199
+ sampleColour.style.backgroundColor = text;
200
+ sampleColour.appendChild(document.createTextNode(' '));
201
+ colourBox.appendChild(sampleColour);
202
+
203
+ // Append to element
204
+ element.appendChild(colourBox);
205
+ return element;
206
+ }
207
+ });
208
+
209
+ language.push(Rule.cStyleComment);
210
+ language.push(Rule.webLink);
211
+
212
+ language.push({
213
+ pattern: /\{(.|\n)*?\}/,
214
+ type: 'properties',
215
+ allow: '*'
216
+ });
217
+
218
+ language.push({
219
+ pattern: /\:(.*?(?=\})|(.|\n)*?(?=(\}|\;)))/,
220
+ matches: Rule.extractMatches({
221
+ type: 'value',
222
+ allow: ['color'],
223
+ only: ['properties']
224
+ })
225
+ });
226
+
227
+ language.push({
228
+ pattern: /([\-\w]+):/,
229
+ matches: Rule.extractMatches({
230
+ type: 'property',
231
+ process: Rule.webLinkProcess('http://cssdocs.org/')
232
+ })
233
+ });
234
+
235
+ // Strings
236
+ language.push(Rule.singleQuotedString);
237
+ language.push(Rule.doubleQuotedString);
238
+ language.push(Rule.stringEscape);
239
+
240
+ language.push(Rule.cStyleFunction);
241
+
242
+ export default function register(syntax) {
243
+ syntax.register('css', language);
244
+ }
@@ -0,0 +1,24 @@
1
+ import {Language} from '../Language.js';
2
+
3
+ const language = new Language('diff');
4
+
5
+ // File headers
6
+ language.push({pattern: /^\+\+\+.*$/m, type: 'add'});
7
+ language.push({pattern: /^\-\-\-.*$/m, type: 'del'});
8
+
9
+ // Chunk header (offset markers)
10
+ language.push({pattern: /^@@.*@@/m, type: 'offset'});
11
+
12
+ // Added lines
13
+ language.push({pattern: /^\+[^\+]{1}.*$/m, type: 'insert'});
14
+
15
+ // Removed lines
16
+ language.push({pattern: /^\-[^\-]{1}.*$/m, type: 'remove'});
17
+
18
+ // Note: The postprocess function that added classes to parent lines has been removed.
19
+ // CSS can be used to style entire lines based on the span types instead.
20
+
21
+ export default function register(syntax) {
22
+ syntax.register('diff', language);
23
+ syntax.alias('diff', ['patch']);
24
+ }
@@ -0,0 +1,135 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('go');
5
+
6
+ const keywords = [
7
+ 'break',
8
+ 'default',
9
+ 'func',
10
+ 'interface',
11
+ 'select',
12
+ 'case',
13
+ 'defer',
14
+ 'go',
15
+ 'map',
16
+ 'struct',
17
+ 'chan',
18
+ 'else',
19
+ 'goto',
20
+ 'package',
21
+ 'switch',
22
+ 'const',
23
+ 'fallthrough',
24
+ 'if',
25
+ 'range',
26
+ 'type',
27
+ 'continue',
28
+ 'for',
29
+ 'import',
30
+ 'return',
31
+ 'var'
32
+ ];
33
+
34
+ const types = [
35
+ // Specific types first (before regexes that might partially match them)
36
+ 'uintptr',
37
+ 'string',
38
+ 'byte',
39
+ 'bool',
40
+ 'rune',
41
+ // Then regex patterns
42
+ /u?int\d*/,
43
+ /float\d+/,
44
+ /complex\d+/
45
+ ];
46
+
47
+ // Operators - ordered from longest to shortest to avoid partial matches
48
+ const operators = [
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
+ '&^',
74
+ '+',
75
+ '-',
76
+ '*',
77
+ '/',
78
+ '%',
79
+ '&',
80
+ '|',
81
+ '^',
82
+ '<',
83
+ '>',
84
+ '=',
85
+ '!',
86
+ ',',
87
+ ';',
88
+ '.',
89
+ ':'
90
+ ];
91
+
92
+ const values = ['true', 'false', 'iota', 'nil'];
93
+
94
+ const functions = [
95
+ 'append',
96
+ 'cap',
97
+ 'close',
98
+ 'complex',
99
+ 'copy',
100
+ 'imag',
101
+ 'len',
102
+ 'make',
103
+ 'new',
104
+ 'panic',
105
+ 'print',
106
+ 'println',
107
+ 'real',
108
+ 'recover'
109
+ ];
110
+
111
+ language.push(values, {type: 'constant'});
112
+ language.push(types, {type: 'type'});
113
+ language.push(keywords, {type: 'keyword'});
114
+ language.push(operators, {type: 'operator'});
115
+ language.push(functions, {type: 'function'});
116
+
117
+ language.push(Rule.cStyleFunction);
118
+ language.push(Rule.camelCaseType);
119
+
120
+ language.push(Rule.cStyleComment);
121
+ language.push(Rule.cppStyleComment);
122
+ language.push(Rule.webLink);
123
+
124
+ // Strings
125
+ language.push(Rule.singleQuotedString);
126
+ language.push(Rule.doubleQuotedString);
127
+ language.push(Rule.stringEscape);
128
+
129
+ // Numbers
130
+ language.push(Rule.decimalNumber);
131
+ language.push(Rule.hexNumber);
132
+
133
+ export default function register(syntax) {
134
+ syntax.register('go', language);
135
+ }
@@ -0,0 +1,110 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('haskell');
5
+
6
+ // Multi-word keywords need to be matched first (before single words)
7
+ language.push(
8
+ [
9
+ 'data family',
10
+ 'data instance',
11
+ 'deriving instance',
12
+ 'type family',
13
+ 'type instance'
14
+ ],
15
+ {type: 'keyword'}
16
+ );
17
+
18
+ const keywords = [
19
+ 'as',
20
+ 'case',
21
+ 'of',
22
+ 'class',
23
+ 'data',
24
+ 'default',
25
+ 'deriving',
26
+ 'do',
27
+ 'forall',
28
+ 'foreign',
29
+ 'hiding',
30
+ 'if',
31
+ 'then',
32
+ 'else',
33
+ 'import',
34
+ 'infix',
35
+ 'infixl',
36
+ 'infixr',
37
+ 'instance',
38
+ 'let',
39
+ 'in',
40
+ 'mdo',
41
+ 'module',
42
+ 'newtype',
43
+ 'proc',
44
+ 'qualified',
45
+ 'rec',
46
+ 'type',
47
+ 'where'
48
+ ];
49
+
50
+ // Operators - ordered from longest to shortest to avoid partial matches
51
+ const operators = [
52
+ '::',
53
+ '->',
54
+ '<-',
55
+ '-<<',
56
+ '-<',
57
+ '??',
58
+ '`',
59
+ '|',
60
+ '\\',
61
+ '-',
62
+ '*',
63
+ '?',
64
+ '#',
65
+ '@',
66
+ '!',
67
+ '_',
68
+ '~',
69
+ '>',
70
+ ';',
71
+ '{',
72
+ '}'
73
+ ];
74
+
75
+ const values = ['True', 'False'];
76
+
77
+ language.push(values, {type: 'constant'});
78
+ language.push(keywords, {type: 'keyword'});
79
+ language.push(operators, {type: 'operator'});
80
+
81
+ // CamelCase types
82
+ language.push(Rule.camelCaseType);
83
+
84
+ // Comments
85
+ language.push({
86
+ pattern: /\-\-.*$/m,
87
+ type: 'comment',
88
+ allow: ['href']
89
+ });
90
+
91
+ language.push({
92
+ pattern: /\{\-[\s\S]*?\-\}/m,
93
+ type: 'comment',
94
+ allow: ['href']
95
+ });
96
+
97
+ language.push(Rule.webLink);
98
+
99
+ // Numbers
100
+ language.push(Rule.decimalNumber);
101
+ language.push(Rule.hexNumber);
102
+
103
+ // Strings
104
+ language.push(Rule.singleQuotedString);
105
+ language.push(Rule.doubleQuotedString);
106
+ language.push(Rule.stringEscape);
107
+
108
+ export default function register(syntax) {
109
+ syntax.register('haskell', language);
110
+ }