/ src / theme / languages / smalltalk.js
smalltalk.js
 1  /*! `smalltalk` grammar compiled for Highlight.js 11.10.0 */
 2    (function(){
 3      var hljsGrammar = (function () {
 4    'use strict';
 5  
 6    /*
 7    Language: Smalltalk
 8    Description: Smalltalk is an object-oriented, dynamically typed reflective programming language.
 9    Author: Vladimir Gubarkov <xonixx@gmail.com>
10    Website: https://en.wikipedia.org/wiki/Smalltalk
11    Category: system
12    */
13  
14    function smalltalk(hljs) {
15      const VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';
16      const CHAR = {
17        className: 'string',
18        begin: '\\$.{1}'
19      };
20      const SYMBOL = {
21        className: 'symbol',
22        begin: '#' + hljs.UNDERSCORE_IDENT_RE
23      };
24      return {
25        name: 'Smalltalk',
26        aliases: [ 'st' ],
27        keywords: [
28          "self",
29          "super",
30          "nil",
31          "true",
32          "false",
33          "thisContext"
34        ],
35        contains: [
36          hljs.COMMENT('"', '"'),
37          hljs.APOS_STRING_MODE,
38          {
39            className: 'type',
40            begin: '\\b[A-Z][A-Za-z0-9_]*',
41            relevance: 0
42          },
43          {
44            begin: VAR_IDENT_RE + ':',
45            relevance: 0
46          },
47          hljs.C_NUMBER_MODE,
48          SYMBOL,
49          CHAR,
50          {
51            // This looks more complicated than needed to avoid combinatorial
52            // explosion under V8. It effectively means `| var1 var2 ... |` with
53            // whitespace adjacent to `|` being optional.
54            begin: '\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\|',
55            returnBegin: true,
56            end: /\|/,
57            illegal: /\S/,
58            contains: [ { begin: '(\\|[ ]*)?' + VAR_IDENT_RE } ]
59          },
60          {
61            begin: '#\\(',
62            end: '\\)',
63            contains: [
64              hljs.APOS_STRING_MODE,
65              CHAR,
66              hljs.C_NUMBER_MODE,
67              SYMBOL
68            ]
69          }
70        ]
71      };
72    }
73  
74    return smalltalk;
75  
76  })();
77  
78      hljs.registerLanguage('smalltalk', hljsGrammar);
79    })();