1 | /*
|
2 | Language: Go
|
3 | Author: Stephan Kountso aka StepLg <steplg@gmail.com>
|
4 | Contributors: Evgeny Stepanischev <imbolk@gmail.com>
|
5 | Description: Google go language (golang). For info about language
|
6 | Website: http://golang.org/
|
7 | Category: common, system
|
8 | */
|
9 |
|
10 | function go(hljs) {
|
11 | const LITERALS = [
|
12 | "true",
|
13 | "false",
|
14 | "iota",
|
15 | "nil"
|
16 | ];
|
17 | const BUILT_INS = [
|
18 | "append",
|
19 | "cap",
|
20 | "close",
|
21 | "complex",
|
22 | "copy",
|
23 | "imag",
|
24 | "len",
|
25 | "make",
|
26 | "new",
|
27 | "panic",
|
28 | "print",
|
29 | "println",
|
30 | "real",
|
31 | "recover",
|
32 | "delete"
|
33 | ];
|
34 | const TYPES = [
|
35 | "bool",
|
36 | "byte",
|
37 | "complex64",
|
38 | "complex128",
|
39 | "error",
|
40 | "float32",
|
41 | "float64",
|
42 | "int8",
|
43 | "int16",
|
44 | "int32",
|
45 | "int64",
|
46 | "string",
|
47 | "uint8",
|
48 | "uint16",
|
49 | "uint32",
|
50 | "uint64",
|
51 | "int",
|
52 | "uint",
|
53 | "uintptr",
|
54 | "rune"
|
55 | ];
|
56 | const KWS = [
|
57 | "break",
|
58 | "case",
|
59 | "chan",
|
60 | "const",
|
61 | "continue",
|
62 | "default",
|
63 | "defer",
|
64 | "else",
|
65 | "fallthrough",
|
66 | "for",
|
67 | "func",
|
68 | "go",
|
69 | "goto",
|
70 | "if",
|
71 | "import",
|
72 | "interface",
|
73 | "map",
|
74 | "package",
|
75 | "range",
|
76 | "return",
|
77 | "select",
|
78 | "struct",
|
79 | "switch",
|
80 | "type",
|
81 | "var",
|
82 | ];
|
83 | const KEYWORDS = {
|
84 | keyword: KWS,
|
85 | type: TYPES,
|
86 | literal: LITERALS,
|
87 | built_in: BUILT_INS
|
88 | };
|
89 | return {
|
90 | name: 'Go',
|
91 | aliases: ['golang'],
|
92 | keywords: KEYWORDS,
|
93 | illegal: '</',
|
94 | contains: [
|
95 | hljs.C_LINE_COMMENT_MODE,
|
96 | hljs.C_BLOCK_COMMENT_MODE,
|
97 | {
|
98 | className: 'string',
|
99 | variants: [
|
100 | hljs.QUOTE_STRING_MODE,
|
101 | hljs.APOS_STRING_MODE,
|
102 | {
|
103 | begin: '`',
|
104 | end: '`'
|
105 | }
|
106 | ]
|
107 | },
|
108 | {
|
109 | className: 'number',
|
110 | variants: [
|
111 | {
|
112 | begin: hljs.C_NUMBER_RE + '[i]',
|
113 | relevance: 1
|
114 | },
|
115 | hljs.C_NUMBER_MODE
|
116 | ]
|
117 | },
|
118 | {
|
119 | begin: /:=/ // relevance booster
|
120 | },
|
121 | {
|
122 | className: 'function',
|
123 | beginKeywords: 'func',
|
124 | end: '\\s*(\\{|$)',
|
125 | excludeEnd: true,
|
126 | contains: [
|
127 | hljs.TITLE_MODE,
|
128 | {
|
129 | className: 'params',
|
130 | begin: /\(/,
|
131 | end: /\)/,
|
132 | endsParent: true,
|
133 | keywords: KEYWORDS,
|
134 | illegal: /["']/
|
135 | }
|
136 | ]
|
137 | }
|
138 | ]
|
139 | };
|
140 | }
|
141 |
|
142 | export { go as default };
|