Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
playground/
playground/
rascript-upstream.js
19 changes: 13 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
SHELL := /bin/bash
.PHONY: test

run:
echo "Starting at http://localhost:8000"
python -m SimpleHTTPServer # Python2.7
# python -m http.server 8000 # Python 3

test:
bash ./scripts/test.sh

gen:
bash ./scripts/gen.sh
bash ./scripts/gen.sh

upgrade:
bash ./scripts/upgrade.sh

clean:
rm -rf plyground
rm rascript-upstream.js

run: gen
echo "Starting at http://localhost:8000"
python -m SimpleHTTPServer # Python2.7
# python -m http.server 8000 # Python 3
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
# highlightjs-rascript
# highlightjs-rascript

[highlight.js](https://highlightjs.org/) syntax definition for [RATools](https://github.com/Jamiras/RATools) DSL, RAScript

[![GitHub License](https://img.shields.io/github/license/joshraphael/highlightjs-rascript)](https://github.com/joshraphael/highlightjs-rascript/blob/main/LICENSE)
[![test](https://github.com/joshraphael/highlightjs-rascript/actions/workflows/test.yaml/badge.svg)](https://github.com/joshraphael/highlightjs-rascript/actions/workflows/test.yaml)
[![GitHub Tag](https://img.shields.io/github/v/tag/joshraphael/highlightjs-rascript)](https://github.com/joshraphael/highlightjs-rascript/tags)
[![GitHub repo size](https://img.shields.io/github/repo-size/joshraphael/highlightjs-rascript)](https://github.com/joshraphael/highlightjs-rascript/archive/main.zip)

## Commands:

|Title|Command|Parameters|Description|
|-|-|-|-|
|Test|`make test`|None|Test the rascript highlightjs module|
|Generate|`make gen`|None|Generate the distribution Javascript of the rascript highlightjs pacakge|
|Upgrade rascript-syntax|`make upgrade`|None|Upgrade the rascript-syntax version|
|Run|`make run`|None|Build and start simple http webserver with example RAScript syntax (using auto-detection)|
25 changes: 14 additions & 11 deletions dist/rascript.es.min.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
/*! `rascript` grammar compiled for Highlight.js 11.11.1 */
var hljsGrammar=(()=>{"use strict";return e=>({case_insensitive:!1,
contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
className:"variable.language",begin:/\b(this)\b/},{className:"keyword",
begin:/\b(function|class|else|for|if|in|return)\b/},{className:"literal",
begin:/\b(true|false)\b/},{className:"operator",
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/},{scope:"operator",
var hljsGrammar=(()=>{"use strict";return e=>({case_insensitive:!1,contains:[{
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/,/\(/],
beginScope:{1:"title.function.invoke"},relevance:10
},e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
scope:"variable.language",begin:/\b(this)\b/,relevance:0},{scope:"keyword",
begin:/\b(else|for|if|in|return)\b/,relevance:0},{scope:"literal",
begin:/\b(true|false)\b/,relevance:0},{scope:"operator",
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/,relevance:0},{scope:"operator",
match:/[\+\-\*\/\%\^\&\^\~\>\<\!\|]/,relevance:0},{
begin:[/function[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{2:"title.function"}
},{begin:[/class[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{2:"title.class"}},{
begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"title.function.invoke"}},{
className:"variable",begin:/[a-zA-Z_][\w]*/,relevance:0}]})})()
;export default hljsGrammar;
begin:[/\b(function)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"keyword",
3:"title.function"},relevance:0},{
begin:[/\b(class)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{1:"keyword",
3:"title.class"},relevance:0},{begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{
1:"title.function.invoke"},relevance:0},{scope:"variable",
begin:/[a-zA-Z_][\w]*/,relevance:0}]})})();export default hljsGrammar;
26 changes: 15 additions & 11 deletions dist/rascript.min.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
/*! `rascript` grammar compiled for Highlight.js 11.11.1 */
(()=>{var e=(()=>{"use strict";return e=>({case_insensitive:!1,
contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
className:"variable.language",begin:/\b(this)\b/},{className:"keyword",
begin:/\b(function|class|else|for|if|in|return)\b/},{className:"literal",
begin:/\b(true|false)\b/},{className:"operator",
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/},{scope:"operator",
(()=>{var e=(()=>{"use strict";return e=>({case_insensitive:!1,contains:[{
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/,/\(/],
beginScope:{1:"title.function.invoke"},relevance:10
},e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.COMMENT("/\\*","\\*/"),{
scope:"variable.language",begin:/\b(this)\b/,relevance:0},{scope:"keyword",
begin:/\b(else|for|if|in|return)\b/,relevance:0},{scope:"literal",
begin:/\b(true|false)\b/,relevance:0},{scope:"operator",
begin:/(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/,relevance:0},{scope:"operator",
match:/[\+\-\*\/\%\^\&\^\~\>\<\!\|]/,relevance:0},{
begin:[/function[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{2:"title.function"}
},{begin:[/class[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{2:"title.class"}},{
begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"title.function.invoke"}},{
className:"variable",begin:/[a-zA-Z_][\w]*/,relevance:0}]})})()
;hljs.registerLanguage("rascript",e)})();
begin:[/\b(function)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/,/\(/],beginScope:{1:"keyword",
3:"title.function"},relevance:0},{
begin:[/\b(class)\b/,/[\t ]+/,/[a-zA-Z_][\w]*/],beginScope:{1:"keyword",
3:"title.class"},relevance:0},{begin:[/[a-zA-Z_][\w]*/,/\(/],beginScope:{
1:"title.function.invoke"},relevance:0},{scope:"variable",
begin:/[a-zA-Z_][\w]*/,relevance:0}]})})();hljs.registerLanguage("rascript",e)
})();
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@
"name": "highlightjs-rascript",
"version": "0.0.0",
"description": "highlight.js syntax definition for RATools DSL, RAScript",
"main": "src/rascript.js",
"main": "src/languages/rascript.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/joshraphael/highlightjs-rascript.git"
"url": "git+https://github.com/joshraphael/highlightjs-rascript.git"
},
"keywords": [
"rascript",
"hljs",
"highlight.js",
"highlightjs",
"syntax"
Expand Down
2 changes: 0 additions & 2 deletions scripts/gen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ bash ./scripts/setup.sh
export PLAYGROUND="playground"
export HIGHLIGHTJS_RASCRIPT="${PLAYGROUND}/extra/highlightjs-rascript"

cp ${PLAYGROUND}/rascript.js src/languages

rm -rf dist
mkdir -p dist
cd ${PLAYGROUND}
Expand Down
11 changes: 8 additions & 3 deletions scripts/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,19 @@

export PLAYGROUND="playground"
export HIGHLIGHTJS_RASCRIPT="${PLAYGROUND}/extra/highlightjs-rascript"
export RASCRIPT_SYNTAX_VERSION="v0.2.0"
export RASCRIPT_SYNTAX_VERSION="v0.3.0"
export HIGHLIGHTJS_VERSION="11.11.1"

rm -rf ${PLAYGROUND}
mkdir -p ${PLAYGROUND}
git clone https://github.com/highlightjs/highlight.js ${PLAYGROUND}
wget -O ${PLAYGROUND}/rascript.js "https://github.com/joshraphael/rascript-syntax/releases/download/${RASCRIPT_SYNTAX_VERSION}/rascript.js"
cd ${PLAYGROUND}
git checkout tags/${HIGHLIGHTJS_VERSION}
cd ..
wget -O rascript-upstream.js "https://github.com/joshraphael/rascript-syntax/releases/download/${RASCRIPT_SYNTAX_VERSION}/rascript.js"
mkdir -p ${HIGHLIGHTJS_RASCRIPT}
cp -r src ${HIGHLIGHTJS_RASCRIPT}
cp -r test ${HIGHLIGHTJS_RASCRIPT}
cd ${PLAYGROUND}
npm ci
npm ci
node ./tools/build.js -t cdn
3 changes: 1 addition & 2 deletions scripts/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@ bash ./scripts/setup.sh
export PLAYGROUND="playground"
export HIGHLIGHTJS_RASCRIPT="${PLAYGROUND}/extra/highlightjs-rascript"

diff -q "src/languages/rascript.js" "${PLAYGROUND}/rascript.js"
diff -q "src/languages/rascript.js" "rascript-upstream.js"
if [ $? -ne 0 ]; then
exit 1
fi

cd ${PLAYGROUND}
node ./tools/build.js -t cdn
npm run build_and_test
if [ $? -ne 0 ]; then
exit 1
Expand Down
5 changes: 5 additions & 0 deletions scripts/upgrade.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

bash ./scripts/setup.sh

cp rascript-upstream.js src/languages/rascript.js
132 changes: 115 additions & 17 deletions src/languages/rascript.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,99 @@ Language: RAScript
Author: Joshua Raphael
Description: Syntax grammar for RAScript, a RetroAchievements.org DSL
Category: syntax
Version: v0.2.0
Version: v0.3.0
*/

function ImportantWordRegex() {
let words = [
"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",
]
return "\\b(" + words.join("|") + ")\\b";
}

export default function(hljs) {
return {
case_insensitive: false,
contains: [
// This block helps highlight.js auto detect RAScript syntax
{
begin: [
new RegExp(ImportantWordRegex()),
/\(/
],
beginScope: {
1: "title.function.invoke"
},
relevance: 10
},
hljs.C_LINE_COMMENT_MODE,
hljs.QUOTE_STRING_MODE,
hljs.C_NUMBER_MODE,
Expand All @@ -17,20 +104,24 @@ export default function(hljs) {
'\\*/',
),
{
className: 'variable.language',
begin: /\b(this)\b/
scope: 'variable.language',
begin: /\b(this)\b/,
relevance: 0
},
{
className: 'keyword',
begin: /\b(function|class|else|for|if|in|return)\b/
scope: 'keyword',
begin: /\b(else|for|if|in|return)\b/,
relevance: 0
},
{
className: 'literal',
begin: /\b(true|false)\b/
scope: 'literal',
begin: /\b(true|false)\b/,
relevance: 0
},
{
className: 'operator',
begin: /(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/
scope: 'operator',
begin: /(\|\||\&\&|\=\=|\!\=|\>\=|\<\=|\=\>)/,
relevance: 0
},
{
scope: 'operator',
Expand All @@ -39,22 +130,28 @@ export default function(hljs) {
},
{
begin: [
/function[\t ]+/,
/\b(function)\b/,
/[\t ]+/,
/[a-zA-Z_][\w]*/,
/\(/
],
beginScope: {
2: "title.function"
}
1: "keyword",
3: "title.function"
},
relevance: 0
},
{
begin: [
/class[\t ]+/,
/\b(class)\b/,
/[\t ]+/,
/[a-zA-Z_][\w]*/
],
beginScope: {
2: "title.class"
}
1: "keyword",
3: "title.class"
},
relevance: 0
},
{
begin: [
Expand All @@ -63,10 +160,11 @@ export default function(hljs) {
],
beginScope: {
1: "title.function.invoke"
}
},
relevance: 0
},
{
className: 'variable',
scope: 'variable',
begin: /[a-zA-Z_][\w]*/,
relevance: 0
}
Expand Down
Loading