File tree Expand file tree Collapse file tree 5 files changed +83
-0
lines changed Expand file tree Collapse file tree 5 files changed +83
-0
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,9 @@ Category: scripting
9
9
10
10
/** @type LanguageFn */
11
11
export default function ( hljs ) {
12
+
13
+ const regex = hljs . regex ;
14
+
12
15
const SUBST = {
13
16
className : 'subst' ,
14
17
variants : [ { begin : '\\$[A-Za-z0-9_]+' } ]
@@ -221,6 +224,42 @@ export default function(hljs) {
221
224
$pattern : / [ A - Z a - z ] [ A - Z a - z 0 - 9 _ ] * \? ? /
222
225
} ;
223
226
227
+ const CAPITALIZED_BUILT_IN_TYPES = BUILT_IN_TYPES . filter ( type => / ^ [ A - Z ] / . test ( type ) ) ;
228
+
229
+ const BUILT_IN_TYPES_REGEX = `\\b(${ CAPITALIZED_BUILT_IN_TYPES . join ( '|' ) } )\\b` ;
230
+
231
+ const CLASS_NAME_RE = regex . either (
232
+ / \b ( [ A - Z ] + [ a - z 0 - 9 ] + ) + / ,
233
+ // ends in caps
234
+ / \b ( [ A - Z ] + [ a - z 0 - 9 ] + ) + [ A - Z ] + / ,
235
+ ) ;
236
+
237
+ const CLASS_REFERENCE = {
238
+ relevance : 0 ,
239
+ variants : [
240
+ {
241
+ // prevent built-in types with capital letter from being selected as title.class
242
+ match : BUILT_IN_TYPES_REGEX ,
243
+ skip : true
244
+ } ,
245
+ {
246
+ match : CLASS_NAME_RE ,
247
+ scope : "title.class"
248
+ }
249
+ ]
250
+ } ;
251
+
252
+ const FUNCTION_REFERENCE = {
253
+ relevance : 0 ,
254
+ match : [
255
+ / [ a - z ] [ A - Z a - z 0 - 9 ] * / ,
256
+ / \( /
257
+ ] ,
258
+ className : {
259
+ 1 : "title.function"
260
+ } ,
261
+ } ;
262
+
224
263
return {
225
264
name : 'Dart' ,
226
265
keywords : KEYWORDS ,
@@ -257,6 +296,8 @@ export default function(hljs) {
257
296
hljs . UNDERSCORE_TITLE_MODE
258
297
]
259
298
} ,
299
+ CLASS_REFERENCE ,
300
+ FUNCTION_REFERENCE ,
260
301
NUMBER ,
261
302
{
262
303
className : 'meta' ,
Original file line number Diff line number Diff line change
1
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Person</span> </span>{
2
+ <span class="hljs-built_in">String</span> name;
3
+ <span class="hljs-built_in">int</span> age;
4
+
5
+ <span class="hljs-title class_">Person</span>(<span class="hljs-keyword">this</span>.name, <span class="hljs-keyword">this</span>.age);
6
+
7
+ <span class="hljs-keyword">void</span> <span class="hljs-title function_">introduce</span>() {
8
+ <span class="hljs-title function_">print</span>(<span class="hljs-string">'My name is <span class="hljs-subst">$name</span> and I am <span class="hljs-subst">$age</span> years old.'</span>);
9
+ }
10
+ }
Original file line number Diff line number Diff line change
1
+ class Person {
2
+ String name;
3
+ int age;
4
+
5
+ Person(this.name, this.age);
6
+
7
+ void introduce() {
8
+ print('My name is $name and I am $age years old.');
9
+ }
10
+ }
Original file line number Diff line number Diff line change
1
+ <span class="hljs-keyword">void</span> <span class="hljs-title function_">greet</span>(<span class="hljs-built_in">String</span> name) {
2
+ <span class="hljs-title function_">print</span>(<span class="hljs-string">'Hello, <span class="hljs-subst">$name</span>!'</span>);
3
+ }
4
+
5
+ <span class="hljs-keyword">void</span> <span class="hljs-title function_">dummy</span>(<span class="hljs-title class_">Foo</span> obj) {
6
+ <span class="hljs-keyword">return</span> obj;
7
+ }
8
+
9
+ <span class="hljs-built_in">int</span> <span class="hljs-title function_">add</span>(<span class="hljs-built_in">int</span> a, <span class="hljs-built_in">int</span> b) {
10
+ <span class="hljs-keyword">return</span> a + b;
11
+ }
Original file line number Diff line number Diff line change
1
+ void greet(String name) {
2
+ print('Hello, $name!');
3
+ }
4
+
5
+ void dummy(Foo obj) {
6
+ return obj;
7
+ }
8
+
9
+ int add(int a, int b) {
10
+ return a + b;
11
+ }
You can’t perform that action at this time.
0 commit comments