1/*
2Language: Smalltalk
3Author: Vladimir Gubarkov <xonixx@gmail.com>
4*/
5
6hljs.LANGUAGES.smalltalk = function(){
7  var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';
8  return {
9    defaultMode: {
10      lexems: [hljs.UNDERSCORE_IDENT_RE],
11      contains: ['comment', 'string', 'class', 'method',
12                  'number', 'symbol', 'char', 'localvars', 'array'],
13      keywords: {'self': 1, 'super': 1, 'nil': 1, 'true': 1, 'false': 1, 'thisContext': 1} // only 6
14    },
15    modes: [
16      {
17        className: 'class',
18        begin: '\\b[A-Z][A-Za-z0-9_]*', end: '^',
19        relevance: 0
20      },
21      {
22        className: 'symbol',
23        begin: '#' + hljs.UNDERSCORE_IDENT_RE, end: '^'
24      },
25      hljs.C_NUMBER_MODE,
26      hljs.APOS_STRING_MODE,
27      {
28        className: 'comment',
29        begin: '"', end: '"',
30        relevance: 0
31      },
32      {
33        className: 'method',
34        begin: VAR_IDENT_RE + ':', end:'^'
35      },
36      {
37        className: 'char',
38        begin: '\\$.{1}', end: '^'
39      },
40      {
41        className: 'localvars',
42        begin: '\\|\\s*((' + VAR_IDENT_RE + ')\\s*)+\\|', end: '^',
43        relevance: 10
44      },
45      {
46        className: 'array',
47        begin: '\\#\\(', end: '\\)',
48        contains: ['string', 'char', 'number', 'symbol']
49      }
50    ]
51  };
52}();