Skip to content

Commit 529834d

Browse files
committed
upgrade to rascript-syntax v0.3.0 to improve auto detection
1 parent 07e09d9 commit 529834d

File tree

9 files changed

+163
-52
lines changed

9 files changed

+163
-52
lines changed

Makefile

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
SHELL := /bin/bash
22
.PHONY: test
33

4-
run:
5-
echo "Starting at http://localhost:8000"
6-
python -m SimpleHTTPServer # Python2.7
7-
# python -m http.server 8000 # Python 3
8-
94
test:
105
bash ./scripts/test.sh
116

127
gen:
138
bash ./scripts/gen.sh
149

10+
upgrade:
11+
bash ./scripts/upgrade.sh
12+
1513
clean:
1614
rm -rf plyground
17-
rm rascript-upstream.js
15+
rm rascript-upstream.js
16+
17+
run: gen
18+
echo "Starting at http://localhost:8000"
19+
python -m SimpleHTTPServer # Python2.7
20+
# python -m http.server 8000 # Python 3

dist/rascript.es.min.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
/*! `rascript` grammar compiled for Highlight.js 11.11.1 */
2-
var hljsGrammar=(()=>{"use strict";return e=>({case_insensitive:!1,
3-
contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
4-
className:"variable.language",begin:/\b(this)\b/},{className:"keyword",
5-
begin:/\b(function|class|else|for|if|in|return)\b/},{className:"literal",
6-
begin:/\b(true|false)\b/},{className:"operator",
7-
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/},{scope:"operator",
2+
var hljsGrammar=(()=>{"use strict";return e=>({case_insensitive:!1,contains:[{
3+
begin:[/\b(byte|word|tbyte|dword|bit0|bit1|bit2|bit3|bit4|bit5|bit6|bit7|bit|low4|high4|bitcount|word_be|tbyte_be|dword_be|float|float_be|mbf32|mbf32_le|double32|double32_be|prev|prior|bcd|identity_transform|ascii_string_equals|unicode_string_equals|repeated|once|tally|deduct|never|unless|measured|trigger_when|disable_when|always_true|always_false|format|substring|length|range|array_push|array_pop|array_map|array_contains|array_reduce|array_filter|dictionary_contains_key|any_of|all_of|none_of|sum_of|tally_of|max_of|assert|achievement|rich_presence_display|rich_presence_value|rich_presence_lookup|rich_presence_ascii_string_lookup|rich_presence_macro|rich_presence_conditional_display|leaderboard|__ornext)\b/,/\(/],
4+
beginScope:{1:"title.function.invoke"},relevance:10
5+
},e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
6+
scope:"variable.language",begin:/\b(this)\b/,relevance:0},{scope:"keyword",
7+
begin:/\b(else|for|if|in|return)\b/,relevance:0},{scope:"literal",
8+
begin:/\b(true|false)\b/,relevance:0},{scope:"operator",
9+
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/,relevance:0},{scope:"operator",
810
match:/[\+\-\*\/\%\^\&\^\~\>\<\!\|]/,relevance:0},{
9-
begin:[/function[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{2:"title.function"}
10-
},{begin:[/class[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{2:"title.class"}},{
11-
begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"title.function.invoke"}},{
12-
className:"variable",begin:/[a-zA-Z_][\w]*/,relevance:0}]})})()
13-
;export default hljsGrammar;
11+
begin:[/\b(function)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"keyword",
12+
3:"title.function"},relevance:0},{
13+
begin:[/\b(class)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{1:"keyword",
14+
3:"title.class"},relevance:0},{begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{
15+
1:"title.function.invoke"},relevance:0},{scope:"variable",
16+
begin:/[a-zA-Z_][\w]*/,relevance:0}]})})();export default hljsGrammar;

dist/rascript.min.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
/*! `rascript` grammar compiled for Highlight.js 11.11.1 */
2-
(()=>{var e=(()=>{"use strict";return e=>({case_insensitive:!1,
3-
contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
4-
className:"variable.language",begin:/\b(this)\b/},{className:"keyword",
5-
begin:/\b(function|class|else|for|if|in|return)\b/},{className:"literal",
6-
begin:/\b(true|false)\b/},{className:"operator",
7-
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/},{scope:"operator",
2+
(()=>{var e=(()=>{"use strict";return e=>({case_insensitive:!1,contains:[{
3+
begin:[/\b(byte|word|tbyte|dword|bit0|bit1|bit2|bit3|bit4|bit5|bit6|bit7|bit|low4|high4|bitcount|word_be|tbyte_be|dword_be|float|float_be|mbf32|mbf32_le|double32|double32_be|prev|prior|bcd|identity_transform|ascii_string_equals|unicode_string_equals|repeated|once|tally|deduct|never|unless|measured|trigger_when|disable_when|always_true|always_false|format|substring|length|range|array_push|array_pop|array_map|array_contains|array_reduce|array_filter|dictionary_contains_key|any_of|all_of|none_of|sum_of|tally_of|max_of|assert|achievement|rich_presence_display|rich_presence_value|rich_presence_lookup|rich_presence_ascii_string_lookup|rich_presence_macro|rich_presence_conditional_display|leaderboard|__ornext)\b/,/\(/],
4+
beginScope:{1:"title.function.invoke"},relevance:10
5+
},e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
6+
scope:"variable.language",begin:/\b(this)\b/,relevance:0},{scope:"keyword",
7+
begin:/\b(else|for|if|in|return)\b/,relevance:0},{scope:"literal",
8+
begin:/\b(true|false)\b/,relevance:0},{scope:"operator",
9+
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/,relevance:0},{scope:"operator",
810
match:/[\+\-\*\/\%\^\&\^\~\>\<\!\|]/,relevance:0},{
9-
begin:[/function[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{2:"title.function"}
10-
},{begin:[/class[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{2:"title.class"}},{
11-
begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"title.function.invoke"}},{
12-
className:"variable",begin:/[a-zA-Z_][\w]*/,relevance:0}]})})()
13-
;hljs.registerLanguage("rascript",e)})();
11+
begin:[/\b(function)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"keyword",
12+
3:"title.function"},relevance:0},{
13+
begin:[/\b(class)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{1:"keyword",
14+
3:"title.class"},relevance:0},{begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{
15+
1:"title.function.invoke"},relevance:0},{scope:"variable",
16+
begin:/[a-zA-Z_][\w]*/,relevance:0}]})})();hljs.registerLanguage("rascript",e)
17+
})();

scripts/gen.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ bash ./scripts/setup.sh
55
export PLAYGROUND="playground"
66
export HIGHLIGHTJS_RASCRIPT="${PLAYGROUND}/extra/highlightjs-rascript"
77

8-
cp rascript-upstream.js src/languages/rascript.js
9-
108
rm -rf dist
119
mkdir -p dist
1210
cd ${PLAYGROUND}

scripts/setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
export PLAYGROUND="playground"
44
export HIGHLIGHTJS_RASCRIPT="${PLAYGROUND}/extra/highlightjs-rascript"
5-
export RASCRIPT_SYNTAX_VERSION="v0.2.0"
5+
export RASCRIPT_SYNTAX_VERSION="v0.3.0"
66
export HIGHLIGHTJS_VERSION="11.11.1"
77

88
rm -rf ${PLAYGROUND}

scripts/upgrade.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
bash ./scripts/setup.sh
4+
5+
cp rascript-upstream.js src/languages/rascript.js

src/languages/rascript.js

Lines changed: 115 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,99 @@ Language: RAScript
33
Author: Joshua Raphael
44
Description: Syntax grammar for RAScript, a RetroAchievements.org DSL
55
Category: syntax
6-
Version: v0.2.0
6+
Version: v0.3.0
77
*/
8+
9+
function ImportantWordRegex() {
10+
let words = [
11+
"byte",
12+
"word",
13+
"tbyte",
14+
"dword",
15+
"bit0",
16+
"bit1",
17+
"bit2",
18+
"bit3",
19+
"bit4",
20+
"bit5",
21+
"bit6",
22+
"bit7",
23+
"bit",
24+
"low4",
25+
"high4",
26+
"bitcount",
27+
"word_be",
28+
"tbyte_be",
29+
"dword_be",
30+
"float",
31+
"float_be",
32+
"mbf32",
33+
"mbf32_le",
34+
"double32",
35+
"double32_be",
36+
"prev",
37+
"prior",
38+
"bcd",
39+
"identity_transform",
40+
"ascii_string_equals",
41+
"unicode_string_equals",
42+
"repeated",
43+
"once",
44+
"tally",
45+
"deduct",
46+
"never",
47+
"unless",
48+
"measured",
49+
"trigger_when",
50+
"disable_when",
51+
"always_true",
52+
"always_false",
53+
"format",
54+
"substring",
55+
"length",
56+
"range",
57+
"array_push",
58+
"array_pop",
59+
"array_map",
60+
"array_contains",
61+
"array_reduce",
62+
"array_filter",
63+
"dictionary_contains_key",
64+
"any_of",
65+
"all_of",
66+
"none_of",
67+
"sum_of",
68+
"tally_of",
69+
"max_of",
70+
"assert",
71+
"achievement",
72+
"rich_presence_display",
73+
"rich_presence_value",
74+
"rich_presence_lookup",
75+
"rich_presence_ascii_string_lookup",
76+
"rich_presence_macro",
77+
"rich_presence_conditional_display",
78+
"leaderboard",
79+
"__ornext",
80+
]
81+
return "\\b(" + words.join("|") + ")\\b";
82+
}
83+
884
export default function(hljs) {
985
return {
1086
case_insensitive: false,
1187
contains: [
88+
// This block helps highlight.js auto detect RAScript syntax
89+
{
90+
begin: [
91+
new RegExp(ImportantWordRegex()),
92+
/\(/
93+
],
94+
beginScope: {
95+
1: "title.function.invoke"
96+
},
97+
relevance: 10
98+
},
1299
hljs.C_LINE_COMMENT_MODE,
13100
hljs.QUOTE_STRING_MODE,
14101
hljs.C_NUMBER_MODE,
@@ -17,20 +104,24 @@ export default function(hljs) {
17104
'\\*/',
18105
),
19106
{
20-
className: 'variable.language',
21-
begin: /\b(this)\b/
107+
scope: 'variable.language',
108+
begin: /\b(this)\b/,
109+
relevance: 0
22110
},
23111
{
24-
className: 'keyword',
25-
begin: /\b(function|class|else|for|if|in|return)\b/
112+
scope: 'keyword',
113+
begin: /\b(else|for|if|in|return)\b/,
114+
relevance: 0
26115
},
27116
{
28-
className: 'literal',
29-
begin: /\b(true|false)\b/
117+
scope: 'literal',
118+
begin: /\b(true|false)\b/,
119+
relevance: 0
30120
},
31121
{
32-
className: 'operator',
33-
begin: /(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/
122+
scope: 'operator',
123+
begin: /(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/,
124+
relevance: 0
34125
},
35126
{
36127
scope: 'operator',
@@ -39,22 +130,28 @@ export default function(hljs) {
39130
},
40131
{
41132
begin: [
42-
/function[\t ]+/,
133+
/\b(function)\b/,
134+
/[\t ]+/,
43135
/[a-zA-Z_][\w]*/,
44136
/\(/
45137
],
46138
beginScope: {
47-
2: "title.function"
48-
}
139+
1: "keyword",
140+
3: "title.function"
141+
},
142+
relevance: 0
49143
},
50144
{
51145
begin: [
52-
/class[\t ]+/,
146+
/\b(class)\b/,
147+
/[\t ]+/,
53148
/[a-zA-Z_][\w]*/
54149
],
55150
beginScope: {
56-
2: "title.class"
57-
}
151+
1: "keyword",
152+
3: "title.class"
153+
},
154+
relevance: 0
58155
},
59156
{
60157
begin: [
@@ -63,10 +160,11 @@ export default function(hljs) {
63160
],
64161
beginScope: {
65162
1: "title.function.invoke"
66-
}
163+
},
164+
relevance: 0
67165
},
68166
{
69-
className: 'variable',
167+
scope: 'variable',
70168
begin: /[a-zA-Z_][\w]*/,
71169
relevance: 0
72170
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
<span class="hljs-keyword">class</span> <span class="hljs-variable">Test</span>
1+
<span class="hljs-keyword">class</span> <span class="hljs-title class_">Test</span>
22
{
33
<span class="hljs-variable">t_test</span> = <span class="hljs-number">0</span>
44

5-
<span class="hljs-keyword">function</span> <span class="hljs-title function_ invoke__">DoSomething</span>(<span class="hljs-variable">arg1</span>, <span class="hljs-variable">arg2</span>) {
5+
<span class="hljs-keyword">function</span> <span class="hljs-title function_">DoSomething</span>(<span class="hljs-variable">arg1</span>, <span class="hljs-variable">arg2</span>) {
66
<span class="hljs-variable language_">this</span>.<span class="hljs-variable">t_test</span> = <span class="hljs-variable">arg1</span> <span class="hljs-operator">+</span> <span class="hljs-variable">arg2</span>
77
}
88

9-
<span class="hljs-keyword">function</span> <span class="hljs-title function_ invoke__">GetSomething</span>() {
9+
<span class="hljs-keyword">function</span> <span class="hljs-title function_">GetSomething</span>() {
1010
<span class="hljs-keyword">return</span> <span class="hljs-variable language_">this</span>.<span class="hljs-variable">t_test</span>
1111
}
1212
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<span class="hljs-keyword">function</span> <span class="hljs-title function_ invoke__">Test</span>(<span class="hljs-variable">var1</span>) {
1+
<span class="hljs-keyword">function</span> <span class="hljs-title function_">Test</span>(<span class="hljs-variable">var1</span>) {
22
<span class="hljs-keyword">return</span> <span class="hljs-variable">var1</span> <span class="hljs-operator">+</span> <span class="hljs-number">2</span>
33
}

0 commit comments

Comments
 (0)