Skip to content

Commit 261be4b

Browse files
author
Enrico Granata
committed
Keep hacking at the aria.js grammar until it works
1 parent d0e2581 commit 261be4b

File tree

2 files changed

+29
-19
lines changed

2 files changed

+29
-19
lines changed

_includes/head-custom.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66

77
hljs.registerLanguage("aria", aria);
88

9-
// optional: built-in languages you use elsewhere
10-
// import javascript from "https://esm.sh/highlight.js@11/es/languages/javascript";
11-
// hljs.registerLanguage("javascript", javascript);
9+
import bash from "https://esm.sh/highlight.js@11/es/languages/bash";
10+
hljs.registerLanguage("bash", bash);
1211

1312
document.addEventListener("DOMContentLoaded", () => {
1413
document.querySelectorAll("pre code").forEach(el => hljs.highlightElement(el));

assets/js/aria.js

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default function (hljs) {
3939
'and', 'case', 'isa', 'instance', 'reverse', 'try', 'catch', 'break', 'continue', 'for'
4040
].join(' '),
4141
literal: 'true false',
42-
built_in: 'println assert',
42+
built_in: 'alloc arity exit getenv hasattr listattrs print println readattr readln setenv sleep system writeattr',
4343
type: 'Int Float String Bool Result Maybe Any'
4444
};
4545

@@ -69,16 +69,17 @@ export default function (hljs) {
6969
const OP_SYM = /\+\-|u\-|\+|\-|\*|\/|%|<<|>>|==|<=|>=|<|>|\&|\||\^|\(\)|\[\]=|\[\]/;
7070
const OP_DEF = {
7171
className: 'function',
72+
keywords: KEYWORDS,
7273
begin: new RegExp(`\\b(?:reverse\\s+)?operator\\s+(${OP_SYM.source})\\s*\\(`),
7374
beginScope: { 1: 'title.function' },
7475
end: /\)/,
7576
excludeEnd: true,
76-
keywords: KEYWORDS,
7777
contains: [LINE_COMMENT]
7878
};
7979

8080
const TYPE_LIKE_DEF = {
8181
className: 'class',
82+
keywords: KEYWORDS,
8283
variants: [
8384
{ begin: new RegExp(`\\bstruct\\s+(${IDENT.source})\\b`) },
8485
{ begin: new RegExp(`\\benum\\s+(${IDENT.source})\\b`) },
@@ -89,13 +90,7 @@ export default function (hljs) {
8990

9091
const EXTENSION_DEF = {
9192
begin: new RegExp(`\\bextension\\s+(${IDENT.source})\\b`),
92-
beginScope: { 1: 'type' }
93-
};
94-
95-
const ENUM_CASE_DECL = {
96-
className: 'constant',
97-
begin: new RegExp(`\\bcase\\s+(${IDENT.source})\\b`),
98-
beginScope: { 1: 'constant' }
93+
beginScope: { 1: 'title.class' }
9994
};
10095

10196
const ENUM_CASE_USE = {
@@ -138,21 +133,37 @@ export default function (hljs) {
138133
// Continuation lines: ::: ...
139134
const REPL_CONT = { className: 'meta', begin: /^:::\s?/m, relevance: 0 };
140135

136+
const BLOCK = {
137+
begin: /\{/,
138+
end: /\}/,
139+
keywords: KEYWORDS,
140+
contains: [
141+
'self',
142+
LINE_COMMENT,
143+
DQ_STRING, SQ_STRING,
144+
DEC_FLOAT, HEX_INT, OCT_INT, BIN_INT, DEC_INT,
145+
LAMBDA_HEAD, TRY_PROTOCOL, ASSIGN_OP, INDEXING,
146+
FUNC_DEF, METHOD_DEF, OP_DEF,
147+
TYPE_LIKE_DEF, EXTENSION_DEF,
148+
ENUM_CASE_USE,
149+
IMPORTS
150+
],
151+
relevance: 0
152+
};
153+
141154
return {
142155
name: 'Aria',
143156
aliases: ['aria'],
144157
keywords: KEYWORDS,
145158
contains: [
146-
SHEBANG,
147-
REPL_PROMPT, REPL_CONT,
148-
LINE_COMMENT,
149-
DQ_STRING, SQ_STRING,
159+
SHEBANG, REPL_PROMPT, REPL_CONT,
160+
LINE_COMMENT, DQ_STRING, SQ_STRING,
150161
DEC_FLOAT, HEX_INT, OCT_INT, BIN_INT, DEC_INT,
151162
FUNC_DEF, METHOD_DEF, OP_DEF,
152163
TYPE_LIKE_DEF, EXTENSION_DEF,
153-
ENUM_CASE_DECL, ENUM_CASE_USE,
154-
LAMBDA_HEAD, TRY_PROTOCOL, ASSIGN_OP,
155-
INDEXING,
164+
ENUM_CASE_USE,
165+
LAMBDA_HEAD, TRY_PROTOCOL, ASSIGN_OP, INDEXING,
166+
BLOCK,
156167
IMPORTS
157168
]
158169
};

0 commit comments

Comments
 (0)