presently 0.1.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.
- checksums.yaml +7 -0
- data/bin/presently +13 -0
- data/lib/presently/application.rb +104 -0
- data/lib/presently/clock.rb +77 -0
- data/lib/presently/display_view.rb +73 -0
- data/lib/presently/environment/application.rb +62 -0
- data/lib/presently/page.rb +38 -0
- data/lib/presently/page.xrb +31 -0
- data/lib/presently/presentation.rb +72 -0
- data/lib/presently/presentation_controller.rb +181 -0
- data/lib/presently/presenter_view.rb +264 -0
- data/lib/presently/slide.rb +148 -0
- data/lib/presently/slide_view.rb +92 -0
- data/lib/presently/state.rb +66 -0
- data/lib/presently/version.rb +9 -0
- data/lib/presently.rb +9 -0
- data/license.md +21 -0
- data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
- data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
- data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
- data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
- data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
- data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
- data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
- data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
- data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
- data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
- data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
- data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
- data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
- data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
- data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
- data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
- data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
- data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
- data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
- data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
- data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
- data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
- data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
- data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
- data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
- data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
- data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
- data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
- data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
- data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
- data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
- data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
- data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
- data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
- data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
- data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
- data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
- data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
- data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
- data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
- data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
- data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
- data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
- data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
- data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
- data/public/_components/@socketry/syntax/Syntax.js +356 -0
- data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
- data/public/_components/@socketry/syntax/examples/_template.html +53 -0
- data/public/_components/@socketry/syntax/examples/apache.html +72 -0
- data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
- data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
- data/public/_components/@socketry/syntax/examples/bash.html +90 -0
- data/public/_components/@socketry/syntax/examples/basic.html +87 -0
- data/public/_components/@socketry/syntax/examples/c.html +141 -0
- data/public/_components/@socketry/syntax/examples/clang.html +202 -0
- data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
- data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
- data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
- data/public/_components/@socketry/syntax/examples/diff.html +142 -0
- data/public/_components/@socketry/syntax/examples/examples.css +216 -0
- data/public/_components/@socketry/syntax/examples/go.html +413 -0
- data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
- data/public/_components/@socketry/syntax/examples/html.html +316 -0
- data/public/_components/@socketry/syntax/examples/index.html +97 -0
- data/public/_components/@socketry/syntax/examples/io.html +552 -0
- data/public/_components/@socketry/syntax/examples/java.html +786 -0
- data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
- data/public/_components/@socketry/syntax/examples/json.html +150 -0
- data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
- data/public/_components/@socketry/syntax/examples/lua.html +737 -0
- data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
- data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
- data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
- data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
- data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
- data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
- data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
- data/public/_components/@socketry/syntax/examples/php.html +95 -0
- data/public/_components/@socketry/syntax/examples/plain.html +222 -0
- data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
- data/public/_components/@socketry/syntax/examples/python.html +82 -0
- data/public/_components/@socketry/syntax/examples/readme.md +79 -0
- data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
- data/public/_components/@socketry/syntax/examples/scala.html +41 -0
- data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
- data/public/_components/@socketry/syntax/examples/sql.html +373 -0
- data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
- data/public/_components/@socketry/syntax/examples/swift.html +176 -0
- data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
- data/public/_components/@socketry/syntax/examples/xml.html +112 -0
- data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
- data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
- data/public/_components/@socketry/syntax/license.md +21 -0
- data/public/_components/@socketry/syntax/package-lock.json +834 -0
- data/public/_components/@socketry/syntax/package.json +43 -0
- data/public/_components/@socketry/syntax/readme.md +162 -0
- data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
- data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
- data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
- data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
- data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
- data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
- data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
- data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
- data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
- data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
- data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
- data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
- data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
- data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
- data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
- data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
- data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
- data/public/_components/@socketry/syntax/themes/theming.md +233 -0
- data/public/_components/@socketry/syntax/update-examples.js +135 -0
- data/public/_static/index.css +593 -0
- data/public/application.js +147 -0
- data/readme.md +69 -0
- data/releases.md +3 -0
- data/templates/code.xrb +12 -0
- data/templates/default.xrb +5 -0
- data/templates/image.xrb +8 -0
- data/templates/section.xrb +5 -0
- data/templates/title.xrb +8 -0
- data/templates/translation.xrb +8 -0
- data/templates/two_column.xrb +8 -0
- metadata +280 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for C/C++/Objective-C language definition
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {test} from 'node:test';
|
|
6
|
+
import assert from 'node:assert';
|
|
7
|
+
|
|
8
|
+
import Syntax from '../../../Syntax.js';
|
|
9
|
+
import register from '../../../Syntax/Language/clang.js';
|
|
10
|
+
|
|
11
|
+
test('clang language can be registered', async () => {
|
|
12
|
+
const syntax = new Syntax();
|
|
13
|
+
register(syntax);
|
|
14
|
+
const language = await syntax.getLanguage('clang');
|
|
15
|
+
assert.ok(language);
|
|
16
|
+
assert.strictEqual(language.name, 'clang');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('clang can be registered with cpp alias', async () => {
|
|
20
|
+
const syntax = new Syntax();
|
|
21
|
+
register(syntax);
|
|
22
|
+
const language = await syntax.getLanguage('cpp');
|
|
23
|
+
assert.ok(language);
|
|
24
|
+
assert.strictEqual(language.name, 'clang');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('clang can be registered with c++ alias', async () => {
|
|
28
|
+
const syntax = new Syntax();
|
|
29
|
+
register(syntax);
|
|
30
|
+
const language = await syntax.getLanguage('c++');
|
|
31
|
+
assert.ok(language);
|
|
32
|
+
assert.strictEqual(language.name, 'clang');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('clang can be registered with c alias', async () => {
|
|
36
|
+
const syntax = new Syntax();
|
|
37
|
+
register(syntax);
|
|
38
|
+
const language = await syntax.getLanguage('c');
|
|
39
|
+
assert.ok(language);
|
|
40
|
+
assert.strictEqual(language.name, 'clang');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('clang can be registered with objective-c alias', async () => {
|
|
44
|
+
const syntax = new Syntax();
|
|
45
|
+
register(syntax);
|
|
46
|
+
const language = await syntax.getLanguage('objective-c');
|
|
47
|
+
assert.ok(language);
|
|
48
|
+
assert.strictEqual(language.name, 'clang');
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test('clang can highlight C keywords', async () => {
|
|
52
|
+
const syntax = new Syntax();
|
|
53
|
+
register(syntax);
|
|
54
|
+
const language = await syntax.getLanguage('clang');
|
|
55
|
+
|
|
56
|
+
const code =
|
|
57
|
+
'int main() {\n if (x > 0) {\n return 1;\n }\n return 0;\n}';
|
|
58
|
+
const matches = await language.getMatches(syntax, code);
|
|
59
|
+
|
|
60
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
61
|
+
assert.ok(keywords.length > 0);
|
|
62
|
+
assert.ok(keywords.some(m => m.value === 'if'));
|
|
63
|
+
assert.ok(keywords.some(m => m.value === 'return'));
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test('clang can highlight C++ keywords', async () => {
|
|
67
|
+
const syntax = new Syntax();
|
|
68
|
+
register(syntax);
|
|
69
|
+
const language = await syntax.getLanguage('clang');
|
|
70
|
+
|
|
71
|
+
const code = 'class MyClass {\n virtual void method() throw() {}\n};';
|
|
72
|
+
const matches = await language.getMatches(syntax, code);
|
|
73
|
+
|
|
74
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
75
|
+
assert.ok(keywords.some(m => m.value === 'class'));
|
|
76
|
+
assert.ok(keywords.some(m => m.value === 'virtual'));
|
|
77
|
+
assert.ok(keywords.some(m => m.value === 'throw'));
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('clang can highlight Objective-C keywords', async () => {
|
|
81
|
+
const syntax = new Syntax();
|
|
82
|
+
register(syntax);
|
|
83
|
+
const language = await syntax.getLanguage('clang');
|
|
84
|
+
|
|
85
|
+
const code = '@interface MyClass : NSObject\n@end';
|
|
86
|
+
const matches = await language.getMatches(syntax, code);
|
|
87
|
+
|
|
88
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
89
|
+
assert.ok(keywords.some(m => m.value === '@interface'));
|
|
90
|
+
assert.ok(keywords.some(m => m.value === '@end'));
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
test('clang can highlight types', async () => {
|
|
94
|
+
const syntax = new Syntax();
|
|
95
|
+
register(syntax);
|
|
96
|
+
const language = await syntax.getLanguage('clang');
|
|
97
|
+
|
|
98
|
+
const code = 'int x;\nfloat y;\ndouble z;\nbool flag;';
|
|
99
|
+
const matches = await language.getMatches(syntax, code);
|
|
100
|
+
|
|
101
|
+
const types = matches.filter(m => m.type === 'type');
|
|
102
|
+
assert.ok(types.some(m => m.value === 'int'));
|
|
103
|
+
assert.ok(types.some(m => m.value === 'float'));
|
|
104
|
+
assert.ok(types.some(m => m.value === 'double'));
|
|
105
|
+
assert.ok(types.some(m => m.value === 'bool'));
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('clang can highlight access modifiers', async () => {
|
|
109
|
+
const syntax = new Syntax();
|
|
110
|
+
register(syntax);
|
|
111
|
+
const language = await syntax.getLanguage('clang');
|
|
112
|
+
|
|
113
|
+
const code =
|
|
114
|
+
'class MyClass {\nprivate:\n int x;\npublic:\n void method();\n};';
|
|
115
|
+
const matches = await language.getMatches(syntax, code);
|
|
116
|
+
|
|
117
|
+
const access = matches.filter(m => m.type === 'access');
|
|
118
|
+
assert.ok(access.some(m => m.value === 'private'));
|
|
119
|
+
assert.ok(access.some(m => m.value === 'public'));
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
test('clang can highlight Objective-C access modifiers', async () => {
|
|
123
|
+
const syntax = new Syntax();
|
|
124
|
+
register(syntax);
|
|
125
|
+
const language = await syntax.getLanguage('clang');
|
|
126
|
+
|
|
127
|
+
const code =
|
|
128
|
+
'@interface MyClass\n@private\n int x;\n@public\n int y;\n@end';
|
|
129
|
+
const matches = await language.getMatches(syntax, code);
|
|
130
|
+
|
|
131
|
+
const access = matches.filter(m => m.type === 'access');
|
|
132
|
+
assert.ok(access.some(m => m.value === '@private'));
|
|
133
|
+
assert.ok(access.some(m => m.value === '@public'));
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
test('clang can highlight constants', async () => {
|
|
137
|
+
const syntax = new Syntax();
|
|
138
|
+
register(syntax);
|
|
139
|
+
const language = await syntax.getLanguage('clang');
|
|
140
|
+
|
|
141
|
+
const code = 'if (ptr == NULL) return false;\nbool flag = true;';
|
|
142
|
+
const matches = await language.getMatches(syntax, code);
|
|
143
|
+
|
|
144
|
+
const constants = matches.filter(m => m.type === 'constant');
|
|
145
|
+
assert.ok(constants.some(m => m.value === 'NULL'));
|
|
146
|
+
assert.ok(constants.some(m => m.value === 'true'));
|
|
147
|
+
assert.ok(constants.some(m => m.value === 'false'));
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
test('clang can highlight Objective-C constants', async () => {
|
|
151
|
+
const syntax = new Syntax();
|
|
152
|
+
register(syntax);
|
|
153
|
+
const language = await syntax.getLanguage('clang');
|
|
154
|
+
|
|
155
|
+
const code = 'if (obj == nil) return NO;\nreturn YES;';
|
|
156
|
+
const matches = await language.getMatches(syntax, code);
|
|
157
|
+
|
|
158
|
+
const constants = matches.filter(m => m.type === 'constant');
|
|
159
|
+
assert.ok(constants.some(m => m.value === 'nil'));
|
|
160
|
+
assert.ok(constants.some(m => m.value === 'YES'));
|
|
161
|
+
assert.ok(constants.some(m => m.value === 'NO'));
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
test('clang can highlight operators', async () => {
|
|
165
|
+
const syntax = new Syntax();
|
|
166
|
+
register(syntax);
|
|
167
|
+
const language = await syntax.getLanguage('clang');
|
|
168
|
+
|
|
169
|
+
const code = 'int result = a + b * c - d / e;';
|
|
170
|
+
const matches = await language.getMatches(syntax, code);
|
|
171
|
+
|
|
172
|
+
const operators = matches.filter(m => m.type === 'operator');
|
|
173
|
+
assert.ok(operators.some(m => m.value === '+'));
|
|
174
|
+
assert.ok(operators.some(m => m.value === '*'));
|
|
175
|
+
assert.ok(operators.some(m => m.value === '-'));
|
|
176
|
+
assert.ok(operators.some(m => m.value === '/'));
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
test('clang can highlight preprocessor directives', async () => {
|
|
180
|
+
const syntax = new Syntax();
|
|
181
|
+
register(syntax);
|
|
182
|
+
const language = await syntax.getLanguage('clang');
|
|
183
|
+
|
|
184
|
+
const code = '#include <stdio.h>\n#define MAX 100\nint main() {}';
|
|
185
|
+
const matches = await language.getMatches(syntax, code);
|
|
186
|
+
|
|
187
|
+
const preprocessor = matches.filter(m => m.type === 'preprocessor');
|
|
188
|
+
assert.ok(preprocessor.length > 0);
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
test('clang can highlight C-style comments', async () => {
|
|
192
|
+
const syntax = new Syntax();
|
|
193
|
+
register(syntax);
|
|
194
|
+
const language = await syntax.getLanguage('clang');
|
|
195
|
+
|
|
196
|
+
const code = '/* This is a comment */\nint x;';
|
|
197
|
+
const matches = await language.getMatches(syntax, code);
|
|
198
|
+
|
|
199
|
+
const comment = matches.find(m => m.type === 'comment');
|
|
200
|
+
assert.ok(comment);
|
|
201
|
+
assert.ok(comment.value.includes('This is a comment'));
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
test('clang can highlight C++-style comments', async () => {
|
|
205
|
+
const syntax = new Syntax();
|
|
206
|
+
register(syntax);
|
|
207
|
+
const language = await syntax.getLanguage('clang');
|
|
208
|
+
|
|
209
|
+
const code = '// This is a comment\nint x;';
|
|
210
|
+
const matches = await language.getMatches(syntax, code);
|
|
211
|
+
|
|
212
|
+
const comment = matches.find(m => m.type === 'comment');
|
|
213
|
+
assert.ok(comment);
|
|
214
|
+
assert.ok(comment.value.includes('This is a comment'));
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
test('clang can highlight strings', async () => {
|
|
218
|
+
const syntax = new Syntax();
|
|
219
|
+
register(syntax);
|
|
220
|
+
const language = await syntax.getLanguage('clang');
|
|
221
|
+
|
|
222
|
+
const code = 'const char* str = "Hello World";';
|
|
223
|
+
const matches = await language.getMatches(syntax, code);
|
|
224
|
+
|
|
225
|
+
const string = matches.find(m => m.type === 'string');
|
|
226
|
+
assert.ok(string);
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
test('clang can highlight character literals', async () => {
|
|
230
|
+
const syntax = new Syntax();
|
|
231
|
+
register(syntax);
|
|
232
|
+
const language = await syntax.getLanguage('clang');
|
|
233
|
+
|
|
234
|
+
const code = "char c = 'A';";
|
|
235
|
+
const matches = await language.getMatches(syntax, code);
|
|
236
|
+
|
|
237
|
+
const string = matches.find(m => m.type === 'string');
|
|
238
|
+
assert.ok(string);
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
test('clang can highlight Objective-C string literals', async () => {
|
|
242
|
+
const syntax = new Syntax();
|
|
243
|
+
register(syntax);
|
|
244
|
+
const language = await syntax.getLanguage('clang');
|
|
245
|
+
|
|
246
|
+
const code = 'NSString *str = @"Hello";';
|
|
247
|
+
const matches = await language.getMatches(syntax, code);
|
|
248
|
+
|
|
249
|
+
const strings = matches.filter(m => m.type === 'string');
|
|
250
|
+
assert.ok(strings.length > 0);
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
test('clang can highlight decimal numbers', async () => {
|
|
254
|
+
const syntax = new Syntax();
|
|
255
|
+
register(syntax);
|
|
256
|
+
const language = await syntax.getLanguage('clang');
|
|
257
|
+
|
|
258
|
+
const code = 'int x = 42;';
|
|
259
|
+
const matches = await language.getMatches(syntax, code);
|
|
260
|
+
|
|
261
|
+
const number = matches.find(m => m.type === 'constant' && m.value === '42');
|
|
262
|
+
assert.ok(number);
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
test('clang can highlight hexadecimal numbers', async () => {
|
|
266
|
+
const syntax = new Syntax();
|
|
267
|
+
register(syntax);
|
|
268
|
+
const language = await syntax.getLanguage('clang');
|
|
269
|
+
|
|
270
|
+
const code = 'int x = 0xFF;';
|
|
271
|
+
const matches = await language.getMatches(syntax, code);
|
|
272
|
+
|
|
273
|
+
const number = matches.find(m => m.type === 'constant' && m.value === '0xFF');
|
|
274
|
+
assert.ok(number);
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
test('clang can highlight struct declarations', async () => {
|
|
278
|
+
const syntax = new Syntax();
|
|
279
|
+
register(syntax);
|
|
280
|
+
const language = await syntax.getLanguage('clang');
|
|
281
|
+
|
|
282
|
+
const code = 'struct Point {\n int x;\n int y;\n};';
|
|
283
|
+
const matches = await language.getMatches(syntax, code);
|
|
284
|
+
|
|
285
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
286
|
+
assert.ok(keywords.some(m => m.value === 'struct'));
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
test('clang can highlight enum declarations', async () => {
|
|
290
|
+
const syntax = new Syntax();
|
|
291
|
+
register(syntax);
|
|
292
|
+
const language = await syntax.getLanguage('clang');
|
|
293
|
+
|
|
294
|
+
const code = 'enum Color { RED, GREEN, BLUE };';
|
|
295
|
+
const matches = await language.getMatches(syntax, code);
|
|
296
|
+
|
|
297
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
298
|
+
assert.ok(keywords.some(m => m.value === 'enum'));
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
test('clang can highlight namespace declarations', async () => {
|
|
302
|
+
const syntax = new Syntax();
|
|
303
|
+
register(syntax);
|
|
304
|
+
const language = await syntax.getLanguage('clang');
|
|
305
|
+
|
|
306
|
+
const code = 'namespace MyNamespace {\n int x;\n}';
|
|
307
|
+
const matches = await language.getMatches(syntax, code);
|
|
308
|
+
|
|
309
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
310
|
+
assert.ok(keywords.some(m => m.value === 'namespace'));
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
test('clang can highlight template keyword', async () => {
|
|
314
|
+
const syntax = new Syntax();
|
|
315
|
+
register(syntax);
|
|
316
|
+
const language = await syntax.getLanguage('clang');
|
|
317
|
+
|
|
318
|
+
const code = 'template <typename T>\nclass Container {};';
|
|
319
|
+
const matches = await language.getMatches(syntax, code);
|
|
320
|
+
|
|
321
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
322
|
+
assert.ok(keywords.some(m => m.value === 'template'));
|
|
323
|
+
assert.ok(keywords.some(m => m.value === 'typename'));
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
test('clang can highlight C-style function calls', async () => {
|
|
327
|
+
const syntax = new Syntax();
|
|
328
|
+
register(syntax);
|
|
329
|
+
const language = await syntax.getLanguage('clang');
|
|
330
|
+
|
|
331
|
+
const code = 'printf("Hello");';
|
|
332
|
+
const matches = await language.getMatches(syntax, code);
|
|
333
|
+
|
|
334
|
+
const func = matches.find(m => m.type === 'function' && m.value === 'printf');
|
|
335
|
+
assert.ok(func);
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
test('clang can highlight CamelCase types', async () => {
|
|
339
|
+
const syntax = new Syntax();
|
|
340
|
+
register(syntax);
|
|
341
|
+
const language = await syntax.getLanguage('clang');
|
|
342
|
+
|
|
343
|
+
const code = 'MyCustomClass *obj;';
|
|
344
|
+
const matches = await language.getMatches(syntax, code);
|
|
345
|
+
|
|
346
|
+
const type = matches.find(
|
|
347
|
+
m => m.type === 'type' && m.value === 'MyCustomClass'
|
|
348
|
+
);
|
|
349
|
+
assert.ok(type);
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
test('clang can highlight Objective-C @property', async () => {
|
|
353
|
+
const syntax = new Syntax();
|
|
354
|
+
register(syntax);
|
|
355
|
+
const language = await syntax.getLanguage('clang');
|
|
356
|
+
|
|
357
|
+
const code = '@property (nonatomic, retain) NSString *name;';
|
|
358
|
+
const matches = await language.getMatches(syntax, code);
|
|
359
|
+
|
|
360
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
361
|
+
assert.ok(keywords.some(m => m.value === '@property'));
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
test('clang can highlight for loops', async () => {
|
|
365
|
+
const syntax = new Syntax();
|
|
366
|
+
register(syntax);
|
|
367
|
+
const language = await syntax.getLanguage('clang');
|
|
368
|
+
|
|
369
|
+
const code = 'for (int i = 0; i < 10; i++) { }';
|
|
370
|
+
const matches = await language.getMatches(syntax, code);
|
|
371
|
+
|
|
372
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
373
|
+
assert.ok(keywords.some(m => m.value === 'for'));
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
test('clang can highlight switch statements', async () => {
|
|
377
|
+
const syntax = new Syntax();
|
|
378
|
+
register(syntax);
|
|
379
|
+
const language = await syntax.getLanguage('clang');
|
|
380
|
+
|
|
381
|
+
const code =
|
|
382
|
+
'switch (x) {\n case 1:\n break;\n default:\n break;\n}';
|
|
383
|
+
const matches = await language.getMatches(syntax, code);
|
|
384
|
+
|
|
385
|
+
const keywords = matches.filter(m => m.type === 'keyword');
|
|
386
|
+
assert.ok(keywords.some(m => m.value === 'switch'));
|
|
387
|
+
assert.ok(keywords.some(m => m.value === 'case'));
|
|
388
|
+
assert.ok(keywords.some(m => m.value === 'default'));
|
|
389
|
+
assert.ok(keywords.some(m => m.value === 'break'));
|
|
390
|
+
});
|