utopia-project 0.37.6 → 0.39.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 (181) 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 +2 -24
  7. data/pages/guides/show.xnode +0 -1
  8. data/pages/releases/index.xnode +0 -1
  9. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +293 -0
  10. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  11. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  12. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  13. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  14. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  15. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  16. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  17. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  18. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  19. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  53. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  54. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  55. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  56. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  57. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  58. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  59. data/public/_components/@socketry/syntax/license.md +21 -0
  60. data/public/_components/@socketry/syntax/package.json +43 -0
  61. data/public/_components/@socketry/syntax/readme.md +162 -0
  62. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  63. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  64. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  65. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  66. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  67. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  68. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  69. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  70. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  71. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  72. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  73. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  74. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  75. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  76. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  77. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  78. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  79. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  80. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  81. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  82. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  83. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  84. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  85. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  86. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  87. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  88. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  89. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  90. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  91. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  92. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  93. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  94. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  95. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  96. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  97. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  98. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  99. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  100. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  101. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  102. data/public/_static/application.js +24 -0
  103. data/public/_static/links.js +18 -16
  104. data/public/_static/sidebar.js +216 -111
  105. data/public/_static/site.css +0 -4
  106. data.tar.gz.sig +0 -0
  107. metadata +95 -74
  108. metadata.gz.sig +0 -0
  109. data/public/_components/jquery/jquery.js +0 -10716
  110. data/public/_components/jquery/jquery.min.js +0 -2
  111. data/public/_components/jquery/jquery.min.map +0 -1
  112. data/public/_components/jquery/jquery.slim.js +0 -8617
  113. data/public/_components/jquery/jquery.slim.min.js +0 -2
  114. data/public/_components/jquery/jquery.slim.min.map +0 -1
  115. data/public/_components/jquery-litebox/jquery.litebox.css +0 -23
  116. data/public/_components/jquery-litebox/jquery.litebox.gallery.css +0 -48
  117. data/public/_components/jquery-litebox/jquery.litebox.js +0 -30
  118. data/public/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -12
  119. data/public/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
  120. data/public/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
  121. data/public/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -4
  122. data/public/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -2
  123. data/public/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -6
  124. data/public/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
  125. data/public/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
  126. data/public/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -3
  127. data/public/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
  128. data/public/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
  129. data/public/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
  130. data/public/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
  131. data/public/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -35
  132. data/public/_components/jquery-syntax/base/jquery.syntax.core.css +0 -58
  133. data/public/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
  134. data/public/_components/jquery-syntax/base/theme.js +0 -1
  135. data/public/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
  136. data/public/_components/jquery-syntax/bright/theme.js +0 -1
  137. data/public/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -3
  138. data/public/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -5
  139. data/public/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -3
  140. data/public/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -4
  141. data/public/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -2
  142. data/public/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -5
  143. data/public/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -5
  144. data/public/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -4
  145. data/public/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -5
  146. data/public/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -2
  147. data/public/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -3
  148. data/public/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -3
  149. data/public/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -4
  150. data/public/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -3
  151. data/public/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -4
  152. data/public/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -3
  153. data/public/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -2
  154. data/public/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -2
  155. data/public/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -3
  156. data/public/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -2
  157. data/public/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -4
  158. data/public/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -4
  159. data/public/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -4
  160. data/public/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -3
  161. data/public/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -4
  162. data/public/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -2
  163. data/public/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -2
  164. data/public/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -3
  165. data/public/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -5
  166. data/public/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -5
  167. data/public/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -4
  168. data/public/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -2
  169. data/public/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -4
  170. data/public/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -3
  171. data/public/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -3
  172. data/public/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -4
  173. data/public/_components/jquery-syntax/jquery.syntax.brush.xrb.js +0 -2
  174. data/public/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -2
  175. data/public/_components/jquery-syntax/jquery.syntax.cache.js +0 -7
  176. data/public/_components/jquery-syntax/jquery.syntax.core.js +0 -34
  177. data/public/_components/jquery-syntax/jquery.syntax.editor.js +0 -11
  178. data/public/_components/jquery-syntax/jquery.syntax.js +0 -8
  179. data/public/_components/jquery-syntax/jquery.syntax.min.js +0 -13
  180. data/public/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
  181. data/public/_components/jquery-syntax/paper/theme.js +0 -1
@@ -0,0 +1,69 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('html');
5
+
6
+ // Custom handler for all <script> tags - determines language based on type attribute
7
+ language.push({
8
+ pattern: /<script(\s+[^>]*?)?>((.|\n)*?)<\/script>/im,
9
+ matches: Rule.extractConditionalMatch(1, 2, [
10
+ {pattern: /type\s*=\s*["']importmap["']/i, language: 'json'},
11
+ {pattern: /type\s*=\s*["'](?:text|application)\/javascript["']/i, language: 'javascript'},
12
+ {language: 'javascript'} // Fallback: no type or unknown type defaults to JavaScript (HTML5)
13
+ ])
14
+ });
15
+
16
+ // Embedded CSS in <style> tags
17
+ language.push({
18
+ pattern: /<style.*?type=.?text\/css.*?>((.|\n)*?)<\/style>/im,
19
+ matches: Rule.extractMatches({language: 'css'})
20
+ });
21
+
22
+ // Embedded PHP
23
+ language.push({
24
+ pattern: /((<\?php)([\s\S]*?)(\?>))/m,
25
+ matches: Rule.extractMatches(
26
+ {type: 'php-tag', allow: ['keyword', 'php-script']},
27
+ {type: 'keyword'},
28
+ {language: 'php-script'},
29
+ {type: 'keyword'}
30
+ )
31
+ });
32
+
33
+ // Embedded Ruby
34
+ language.push({
35
+ pattern: /((<\?rb?)([\s\S]*?)(\?>))/m,
36
+ matches: Rule.extractMatches(
37
+ {type: 'ruby-tag', allow: ['keyword', 'ruby']},
38
+ {type: 'keyword'},
39
+ {language: 'ruby'},
40
+ {type: 'keyword'}
41
+ )
42
+ });
43
+
44
+ // ERB-style instructions
45
+ language.push({
46
+ pattern: /<%=?(.*?)(%>)/,
47
+ type: 'instruction',
48
+ allow: ['string']
49
+ });
50
+
51
+ // DOCTYPE declarations
52
+ language.push({
53
+ pattern: /<\!(DOCTYPE(.*?))>/,
54
+ matches: Rule.extractMatches({type: 'doctype'})
55
+ });
56
+
57
+ // Percent escapes
58
+ language.push({
59
+ pattern: /(%[0-9a-f]{2})/i,
60
+ type: 'percent-escape',
61
+ only: ['html']
62
+ });
63
+
64
+ // Derive from XML for tag parsing
65
+ language.derives('xml');
66
+
67
+ export default function register(syntax) {
68
+ syntax.register('html', language);
69
+ }
@@ -0,0 +1,68 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('io');
5
+
6
+ language.push(Rule.cStyleFunction);
7
+
8
+ const keywords = ['return'];
9
+
10
+ // Operators ordered longest-first
11
+ const operators = [
12
+ '::=',
13
+ ':=',
14
+ 'or',
15
+ 'and',
16
+ 'new',
17
+ 'delete',
18
+ '@',
19
+ '+',
20
+ '*',
21
+ '/',
22
+ '-',
23
+ '&',
24
+ '|',
25
+ '~',
26
+ '!',
27
+ '%',
28
+ '<',
29
+ '=',
30
+ '>',
31
+ '[',
32
+ ']'
33
+ ];
34
+
35
+ language.push(keywords, {type: 'keyword'});
36
+ language.push(operators, {type: 'operator'});
37
+
38
+ // Extract space delimited method invocations
39
+ language.push({
40
+ pattern: /\b([ \t]+([a-z]+))/i,
41
+ matches: Rule.extractMatches({index: 2, type: 'function'})
42
+ });
43
+
44
+ language.push({
45
+ pattern: /\)([ \t]+([a-z]+))/i,
46
+ matches: Rule.extractMatches({index: 2, type: 'function'})
47
+ });
48
+
49
+ // CamelCase types
50
+ language.push(Rule.camelCaseType);
51
+
52
+ language.push(Rule.perlStyleComment);
53
+ language.push(Rule.cStyleComment);
54
+ language.push(Rule.cppStyleComment);
55
+ language.push(Rule.webLink);
56
+
57
+ // Strings
58
+ language.push(Rule.singleQuotedString);
59
+ language.push(Rule.doubleQuotedString);
60
+ language.push(Rule.stringEscape);
61
+
62
+ // Numbers
63
+ language.push(Rule.decimalNumber);
64
+ language.push(Rule.hexNumber);
65
+
66
+ export default function register(syntax) {
67
+ syntax.register('io', language);
68
+ }
@@ -0,0 +1,134 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('java');
5
+
6
+ const keywords = [
7
+ 'abstract',
8
+ 'continue',
9
+ 'for',
10
+ 'switch',
11
+ 'assert',
12
+ 'default',
13
+ 'goto',
14
+ 'synchronized',
15
+ 'do',
16
+ 'if',
17
+ 'break',
18
+ 'implements',
19
+ 'throw',
20
+ 'else',
21
+ 'import',
22
+ 'throws',
23
+ 'case',
24
+ 'enum',
25
+ 'return',
26
+ 'transient',
27
+ 'catch',
28
+ 'extends',
29
+ 'try',
30
+ 'final',
31
+ 'interface',
32
+ 'static',
33
+ 'class',
34
+ 'finally',
35
+ 'strictfp',
36
+ 'volatile',
37
+ 'const',
38
+ 'native',
39
+ 'super',
40
+ 'while'
41
+ ];
42
+
43
+ const access = ['private', 'protected', 'public', 'package'];
44
+
45
+ const types = [
46
+ 'void',
47
+ 'byte',
48
+ 'short',
49
+ 'int',
50
+ 'long',
51
+ 'float',
52
+ 'double',
53
+ 'boolean',
54
+ 'char'
55
+ ];
56
+
57
+ // Operators ordered longest-first to match correctly
58
+ const operators = [
59
+ '>>>=',
60
+ '<<=',
61
+ '>>=',
62
+ '>>>',
63
+ 'instanceof',
64
+ '==',
65
+ '!=',
66
+ '<=',
67
+ '>=',
68
+ '<<',
69
+ '>>',
70
+ '&&',
71
+ '||',
72
+ '++',
73
+ '--',
74
+ '+=',
75
+ '-=',
76
+ '*=',
77
+ '/=',
78
+ '%=',
79
+ '&=',
80
+ '^=',
81
+ '|=',
82
+ 'new',
83
+ 'delete',
84
+ '<',
85
+ '>',
86
+ '+',
87
+ '-',
88
+ '~',
89
+ '!',
90
+ '*',
91
+ '/',
92
+ '%',
93
+ '&',
94
+ '^',
95
+ '|',
96
+ '?',
97
+ '='
98
+ ];
99
+
100
+ const constants = ['this', 'true', 'false', 'null'];
101
+
102
+ language.push(constants, {type: 'constant'});
103
+ language.push(types, {type: 'type'});
104
+ language.push(keywords, {type: 'keyword'});
105
+ language.push(operators, {type: 'operator'});
106
+ language.push(access, {type: 'access'});
107
+
108
+ // Camel Case Types
109
+ language.push(Rule.camelCaseType);
110
+
111
+ // Comments
112
+ language.push(Rule.cStyleComment);
113
+ language.push(Rule.cppStyleComment);
114
+ language.push(Rule.webLink);
115
+
116
+ // Numbers
117
+ language.push(Rule.decimalNumber);
118
+ language.push(Rule.hexNumber);
119
+
120
+ // Strings
121
+ language.push(Rule.singleQuotedString);
122
+ language.push(Rule.doubleQuotedString);
123
+ language.push(Rule.stringEscape);
124
+
125
+ language.push(Rule.cStyleFunction);
126
+
127
+ language.processes['function'] = Rule.webLinkProcess(
128
+ 'java "Developer Documentation"',
129
+ true
130
+ );
131
+
132
+ export default function register(syntax) {
133
+ syntax.register('java', language);
134
+ }
@@ -0,0 +1,89 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('javascript');
5
+
6
+ // Constants/values
7
+ language.push(['this', 'true', 'false', 'null'], {type: 'constant'});
8
+
9
+ // Keywords
10
+ language.push(
11
+ [
12
+ 'async',
13
+ 'await',
14
+ 'break',
15
+ 'case',
16
+ 'catch',
17
+ 'class',
18
+ 'const',
19
+ 'continue',
20
+ 'debugger',
21
+ 'default',
22
+ 'delete',
23
+ 'do',
24
+ 'else',
25
+ 'export',
26
+ 'extends',
27
+ 'finally',
28
+ 'for',
29
+ 'function',
30
+ 'if',
31
+ 'import',
32
+ 'in',
33
+ 'instanceof',
34
+ 'let',
35
+ 'new',
36
+ 'return',
37
+ 'super',
38
+ 'switch',
39
+ 'this',
40
+ 'throw',
41
+ 'try',
42
+ 'typeof',
43
+ 'var',
44
+ 'void',
45
+ 'while',
46
+ 'with',
47
+ 'yield'
48
+ ],
49
+ {type: 'keyword'}
50
+ );
51
+
52
+ // Operators
53
+ language.push(['+', '*', '/', '-', '&', '|', '~', '!', '%', '<', '=', '>', '...'], {
54
+ type: 'operator'
55
+ });
56
+
57
+ // Access modifiers
58
+ language.push(
59
+ ['implements', 'package', 'protected', 'interface', 'private', 'public'],
60
+ {type: 'access'}
61
+ );
62
+
63
+ // Regular expressions
64
+ language.push(Rule.perlStyleRegularExpression);
65
+
66
+ // Camel Case Types
67
+ language.push(Rule.camelCaseType);
68
+
69
+ // Comments
70
+ language.push(Rule.cStyleComment);
71
+ language.push(Rule.cppStyleComment);
72
+ language.push(Rule.webLink);
73
+
74
+ // Strings
75
+ language.push(Rule.singleQuotedString);
76
+ language.push(Rule.doubleQuotedString);
77
+ language.push(Rule.stringEscape);
78
+
79
+ // Numbers
80
+ language.push(Rule.decimalNumber);
81
+ language.push(Rule.hexNumber);
82
+
83
+ // Functions
84
+ language.push(Rule.cStyleFunction);
85
+
86
+ export default function register(syntax) {
87
+ syntax.register('javascript', language);
88
+ syntax.alias('javascript', ['js', 'actionscript']);
89
+ }
@@ -0,0 +1,36 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('json');
5
+
6
+ // JSON values: true, false, null
7
+ language.push(['true', 'false', 'null'], {type: 'constant'});
8
+
9
+ // JSON numbers (integers, floats, scientific notation)
10
+ language.push({
11
+ pattern: /-?(0|[1-9]\d*)(\.\d+)?([eE][+-]?\d+)?/,
12
+ type: 'constant'
13
+ });
14
+
15
+ // JSON strings (with escapes)
16
+ language.push({
17
+ pattern: /"(?:[^"\\]|\\.)*"/,
18
+ type: 'string'
19
+ });
20
+
21
+ // Object keys (strings followed by colon)
22
+ language.push({
23
+ pattern: /("(?:[^"\\]|\\.)*")(\s*)(:)/,
24
+ matches: Rule.extractMatches(
25
+ {type: 'key'},
26
+ null,
27
+ {type: 'operator'}
28
+ )
29
+ });
30
+
31
+ // Structural characters
32
+ language.push(['{', '}', '[', ']', ','], {type: 'operator'});
33
+
34
+ export default function register(syntax) {
35
+ syntax.register('json', language);
36
+ }
@@ -0,0 +1,38 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+ const lispStyleComment = {
4
+ pattern: /(;+) .*$/m,
5
+ type: 'comment',
6
+ allow: ['href']
7
+ };
8
+
9
+ // This syntax is intentionally very sparse. This is because it is a general syntax for Lisp like languages.
10
+ // It might be a good idea to make specific dialects (e.g. common lisp, scheme, clojure, etc)
11
+
12
+ const language = new Language('lisp');
13
+
14
+ language.push(['(', ')'], {type: 'operator'});
15
+
16
+ language.push(lispStyleComment);
17
+
18
+ language.push(Rule.hexNumber);
19
+ language.push(Rule.decimalNumber);
20
+ language.push(Rule.webLink);
21
+
22
+ language.push({
23
+ pattern: /\(\s*([^\s\(\)]+)/im,
24
+ matches: Rule.extractMatches({type: 'function'})
25
+ });
26
+
27
+ language.push({
28
+ pattern: /#[a-z]+/i,
29
+ type: 'constant'
30
+ });
31
+
32
+ // Strings
33
+ language.push(Rule.multiLineDoubleQuotedString);
34
+ language.push(Rule.stringEscape);
35
+
36
+ export default function register(syntax) {
37
+ syntax.register('lisp', language);
38
+ }
@@ -0,0 +1,87 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('lua');
5
+
6
+ const keywords = [
7
+ 'and',
8
+ 'break',
9
+ 'do',
10
+ 'else',
11
+ 'elseif',
12
+ 'end',
13
+ 'false',
14
+ 'for',
15
+ 'function',
16
+ 'if',
17
+ 'in',
18
+ 'local',
19
+ 'nil',
20
+ 'not',
21
+ 'or',
22
+ 'repeat',
23
+ 'return',
24
+ 'then',
25
+ 'true',
26
+ 'until',
27
+ 'while'
28
+ ];
29
+
30
+ // Operators ordered longest-first
31
+ const operators = [
32
+ '==',
33
+ '~=',
34
+ '<=',
35
+ '>=',
36
+ '..',
37
+ '+',
38
+ '-',
39
+ '*',
40
+ '/',
41
+ '%',
42
+ '^',
43
+ '#',
44
+ '=',
45
+ '<',
46
+ '>',
47
+ '?',
48
+ ':'
49
+ ];
50
+
51
+ const values = ['self', 'true', 'false', 'nil'];
52
+
53
+ language.push(values, {type: 'constant'});
54
+ language.push(keywords, {type: 'keyword'});
55
+ language.push(operators, {type: 'operator'});
56
+
57
+ // CamelCase types
58
+ language.push(Rule.camelCaseType);
59
+ language.push(Rule.cStyleFunction);
60
+
61
+ // Single-line comments
62
+ language.push({
63
+ pattern: /\-\-.*$/m,
64
+ type: 'comment',
65
+ allow: ['href']
66
+ });
67
+
68
+ // Multi-line comments
69
+ language.push({
70
+ pattern: /\-\-\[\[(\n|.)*?\]\]\-\-/m,
71
+ type: 'comment',
72
+ allow: ['href']
73
+ });
74
+
75
+ // Strings
76
+ language.push(Rule.singleQuotedString);
77
+ language.push(Rule.doubleQuotedString);
78
+ language.push(Rule.stringEscape);
79
+
80
+ language.push(Rule.hexNumber);
81
+ language.push(Rule.decimalNumber);
82
+
83
+ language.push(Rule.webLink);
84
+
85
+ export default function register(syntax) {
86
+ syntax.register('lua', language);
87
+ }
@@ -0,0 +1,112 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('markdown');
5
+
6
+ // Headers
7
+ language.push({
8
+ pattern: /^#{1,6}\s+.+$/m,
9
+ type: 'heading'
10
+ });
11
+
12
+ // Bold (strong emphasis)
13
+ language.push({
14
+ pattern: /\*\*(.+?)\*\*/,
15
+ type: 'strong'
16
+ });
17
+
18
+ language.push({
19
+ pattern: /__(.+?)__/,
20
+ type: 'strong'
21
+ });
22
+
23
+ // Italic (emphasis)
24
+ language.push({
25
+ pattern: /\*(.+?)\*/,
26
+ type: 'emphasis'
27
+ });
28
+
29
+ language.push({
30
+ pattern: /_(.+?)_/,
31
+ type: 'emphasis'
32
+ });
33
+
34
+ // Code blocks with language
35
+ language.push({
36
+ pattern: /^```[\w-]*\n[\s\S]*?\n```$/m,
37
+ type: 'code'
38
+ });
39
+
40
+ // Inline code
41
+ language.push({
42
+ // Do not allow newlines inside inline code to avoid spanning across blocks/fences:
43
+ pattern: /`([^`\n\r]+)`/,
44
+ type: 'code'
45
+ });
46
+
47
+ // Links - make them clickable
48
+ language.push({
49
+ pattern: /\[([^\]]+)\]\(([^)]+)\)/,
50
+ type: 'link',
51
+ matches: Rule.extractMatches(
52
+ {type: 'string'}, // Link text
53
+ {
54
+ type: 'link',
55
+ process: function (container, match) {
56
+ const anchor = document.createElement('a');
57
+ anchor.className = container.className;
58
+ anchor.textContent = container.textContent;
59
+ anchor.href = match.value;
60
+ return anchor;
61
+ }
62
+ } // URL
63
+ )
64
+ });
65
+
66
+ // Images
67
+ language.push({
68
+ pattern: /!\[([^\]]*)\]\(([^)]+)\)/,
69
+ type: 'link'
70
+ });
71
+
72
+ // Blockquotes
73
+ language.push({
74
+ pattern: /^>\s+.+$/m,
75
+ type: 'quote'
76
+ });
77
+
78
+ // Unordered lists
79
+ language.push({
80
+ pattern: /^[\s]*[-*+]\s+/m,
81
+ type: 'list-marker'
82
+ });
83
+
84
+ // Ordered lists
85
+ language.push({
86
+ pattern: /^[\s]*\d+\.\s+/m,
87
+ type: 'list-marker'
88
+ });
89
+
90
+ // Horizontal rules
91
+ language.push({
92
+ pattern: /^(?:[-*_]){3,}$/m,
93
+ type: 'operator'
94
+ });
95
+
96
+ // URLs - make them clickable
97
+ language.push({
98
+ ...Rule.webLink,
99
+ type: 'link',
100
+ process: function (container, match) {
101
+ const anchor = document.createElement('a');
102
+ anchor.className = container.className;
103
+ anchor.textContent = match.value;
104
+ anchor.href = match.value;
105
+ return anchor;
106
+ }
107
+ });
108
+
109
+ export default function register(syntax) {
110
+ syntax.register('markdown', language);
111
+ syntax.alias('markdown', ['md']);
112
+ }
@@ -0,0 +1,37 @@
1
+ import {Language} from '../Language.js';
2
+ import {Rule} from '../Rule.js';
3
+
4
+ const language = new Language('nginx');
5
+
6
+ // Directives with web links to nginx documentation
7
+ language.push({
8
+ pattern: /((\w+).*?);/,
9
+ matches: Rule.extractMatches(
10
+ {type: 'directive', allow: '*'},
11
+ {
12
+ type: 'function',
13
+ process: Rule.webLinkProcess('http://nginx.org/r/')
14
+ }
15
+ )
16
+ });
17
+
18
+ // Keywords (blocks with { )
19
+ language.push({
20
+ pattern: /(\w+).*?{/,
21
+ matches: Rule.extractMatches({type: 'keyword'})
22
+ });
23
+
24
+ // Variables ($var)
25
+ language.push({pattern: /(\$)[\w]+/, type: 'variable'});
26
+
27
+ // Comments and strings
28
+ language.push(Rule.perlStyleComment);
29
+ language.push(Rule.singleQuotedString);
30
+ language.push(Rule.doubleQuotedString);
31
+
32
+ // Web links
33
+ language.push(Rule.webLink);
34
+
35
+ export default function register(syntax) {
36
+ syntax.register('nginx', language);
37
+ }
@@ -0,0 +1 @@
1
+ export {default} from './clang.js';