@@ -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,33 +69,31 @@ 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` ) } ,
85- { begin : new RegExp ( `\\bmixin\\s+(${ IDENT . source } )\\b` ) }
86+ { begin : new RegExp ( `\\bmixin\\s+(${ IDENT . source } )\\b` ) } ,
87+ { begin : new RegExp ( `\\bextension\\s+(${ IDENT . source } )\\b` ) }
8688 ] ,
8789 beginScope : { 1 : 'title.class' }
8890 } ;
8991
90- const EXTENSION_DEF = {
91- begin : new RegExp ( `\\bextension\\s+(${ IDENT . source } )\\b` ) ,
92- beginScope : { 1 : 'type' }
93- } ;
94-
9592 const ENUM_CASE_DECL = {
96- className : 'constant' ,
97- begin : new RegExp ( `\\bcase\\s+(${ IDENT . source } )\\b` ) ,
98- beginScope : { 1 : 'constant' }
93+ keywords : KEYWORDS ,
94+ match : new RegExp ( `\\b(case)\\s+(${ IDENT . source } )\\b` ) ,
95+ scope : { 1 : 'keyword' , 2 : 'constant' } ,
96+ relevance : 0
9997 } ;
10098
10199 const ENUM_CASE_USE = {
@@ -138,21 +136,37 @@ export default function (hljs) {
138136 // Continuation lines: ::: ...
139137 const REPL_CONT = { className : 'meta' , begin : / ^ : : : \s ? / m, relevance : 0 } ;
140138
139+ const BLOCK = {
140+ begin : / \{ / ,
141+ end : / \} / ,
142+ keywords : KEYWORDS ,
143+ contains : [
144+ 'self' ,
145+ LINE_COMMENT ,
146+ DQ_STRING , SQ_STRING ,
147+ DEC_FLOAT , HEX_INT , OCT_INT , BIN_INT , DEC_INT ,
148+ LAMBDA_HEAD , TRY_PROTOCOL , ASSIGN_OP , INDEXING ,
149+ FUNC_DEF , METHOD_DEF , OP_DEF ,
150+ TYPE_LIKE_DEF ,
151+ ENUM_CASE_DECL , ENUM_CASE_USE ,
152+ IMPORTS
153+ ] ,
154+ relevance : 0
155+ } ;
156+
141157 return {
142158 name : 'Aria' ,
143159 aliases : [ 'aria' ] ,
144160 keywords : KEYWORDS ,
145161 contains : [
146- SHEBANG ,
147- REPL_PROMPT , REPL_CONT ,
148- LINE_COMMENT ,
149- DQ_STRING , SQ_STRING ,
162+ SHEBANG , REPL_PROMPT , REPL_CONT ,
163+ LINE_COMMENT , DQ_STRING , SQ_STRING ,
150164 DEC_FLOAT , HEX_INT , OCT_INT , BIN_INT , DEC_INT ,
151165 FUNC_DEF , METHOD_DEF , OP_DEF ,
152- TYPE_LIKE_DEF , EXTENSION_DEF ,
166+ TYPE_LIKE_DEF ,
153167 ENUM_CASE_DECL , ENUM_CASE_USE ,
154- LAMBDA_HEAD , TRY_PROTOCOL , ASSIGN_OP ,
155- INDEXING ,
168+ LAMBDA_HEAD , TRY_PROTOCOL , ASSIGN_OP , INDEXING ,
169+ BLOCK ,
156170 IMPORTS
157171 ]
158172 } ;
0 commit comments