/* Language: Go Author: Stephan Kountso aka StepLg <steplg@gmail.com> Contributors: Evgeny Stepanischev <imbolk@gmail.com> Description: Google go language (golang). For info about language Website: http://golang.org/ Category: common, system */ function go(hljs) { const LITERALS = [ "true", "false", "iota", "nil" ]; const BUILT_INS = [ "append", "cap", "close", "complex", "copy", "imag", "len", "make", "new", "panic", "print", "println", "real", "recover", "delete" ]; const TYPES = [ "bool", "byte", "complex64", "complex128", "error", "float32", "float64", "int8", "int16", "int32", "int64", "string", "uint8", "uint16", "uint32", "uint64", "int", "uint", "uintptr", "rune" ]; const KWS = [ "break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for", "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select", "struct", "switch", "type", "var", ]; const KEYWORDS = { keyword: KWS, type: TYPES, literal: LITERALS, built_in: BUILT_INS }; return { name: 'Go', aliases: [ 'golang' ], keywords: KEYWORDS, illegal: '</', contains: [ hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, { className: 'string', variants: [ hljs.QUOTE_STRING_MODE, hljs.APOS_STRING_MODE, { begin: '`', end: '`' } ] }, { className: 'number', variants: [ { match: /-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/, // hex without a present digit before . (making a digit afterwards required) relevance: 0 }, { match: /-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/, // hex with a present digit before . (making a digit afterwards optional) relevance: 0 }, { match: /-?\b0[oO](_?[0-7])*i?/, // leading 0o octal relevance: 0 }, { match: /-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/, // decimal without a present digit before . (making a digit afterwards required) relevance: 0 }, { match: /-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/, // decimal with a present digit before . (making a digit afterwards optional) relevance: 0 } ] }, { begin: /:=/ // relevance booster }, { className: 'function', beginKeywords: 'func', end: '\\s*(\\{|$)', excludeEnd: true, contains: [ hljs.TITLE_MODE, { className: 'params', begin: /\(/, end: /\)/, endsParent: true, keywords: KEYWORDS, illegal: /["']/ } ] } ] }; } export { go as default };