Mercurial > yakumo_izuru > aya
comparison vendor/github.com/alecthomas/chroma/v2/lexers/go.go @ 66:787b5ee0289d draft
Use vendored modules
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author | yakumo.izuru |
---|---|
date | Sun, 23 Jul 2023 13:18:53 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
65:6d985efa0f7a | 66:787b5ee0289d |
---|---|
1 package lexers | |
2 | |
3 import ( | |
4 "strings" | |
5 | |
6 . "github.com/alecthomas/chroma/v2" // nolint | |
7 ) | |
8 | |
9 // Go lexer. | |
10 var Go = Register(MustNewLexer( | |
11 &Config{ | |
12 Name: "Go", | |
13 Aliases: []string{"go", "golang"}, | |
14 Filenames: []string{"*.go"}, | |
15 MimeTypes: []string{"text/x-gosrc"}, | |
16 EnsureNL: true, | |
17 }, | |
18 goRules, | |
19 ).SetAnalyser(func(text string) float32 { | |
20 if strings.Contains(text, "fmt.") && strings.Contains(text, "package ") { | |
21 return 0.5 | |
22 } | |
23 if strings.Contains(text, "package ") { | |
24 return 0.1 | |
25 } | |
26 return 0.0 | |
27 })) | |
28 | |
29 func goRules() Rules { | |
30 return Rules{ | |
31 "root": { | |
32 {`\n`, Text, nil}, | |
33 {`\s+`, Text, nil}, | |
34 {`\\\n`, Text, nil}, | |
35 {`//(.*?)\n`, CommentSingle, nil}, | |
36 {`/(\\\n)?[*](.|\n)*?[*](\\\n)?/`, CommentMultiline, nil}, | |
37 {`(import|package)\b`, KeywordNamespace, nil}, | |
38 {`(var|func|struct|map|chan|type|interface|const)\b`, KeywordDeclaration, nil}, | |
39 {Words(``, `\b`, `break`, `default`, `select`, `case`, `defer`, `go`, `else`, `goto`, `switch`, `fallthrough`, `if`, `range`, `continue`, `for`, `return`), Keyword, nil}, | |
40 {`(true|false|iota|nil)\b`, KeywordConstant, nil}, | |
41 {Words(``, `\b(\()`, `uint`, `uint8`, `uint16`, `uint32`, `uint64`, `int`, `int8`, `int16`, `int32`, `int64`, `float`, `float32`, `float64`, `complex64`, `complex128`, `byte`, `rune`, `string`, `bool`, `error`, `uintptr`, `print`, `println`, `panic`, `recover`, `close`, `complex`, `real`, `imag`, `len`, `cap`, `append`, `copy`, `delete`, `new`, `make`), ByGroups(NameBuiltin, Punctuation), nil}, | |
42 {Words(``, `\b`, `uint`, `uint8`, `uint16`, `uint32`, `uint64`, `int`, `int8`, `int16`, `int32`, `int64`, `float`, `float32`, `float64`, `complex64`, `complex128`, `byte`, `rune`, `string`, `bool`, `error`, `uintptr`), KeywordType, nil}, | |
43 {`\d+i`, LiteralNumber, nil}, | |
44 {`\d+\.\d*([Ee][-+]\d+)?i`, LiteralNumber, nil}, | |
45 {`\.\d+([Ee][-+]\d+)?i`, LiteralNumber, nil}, | |
46 {`\d+[Ee][-+]\d+i`, LiteralNumber, nil}, | |
47 {`\d+(\.\d+[eE][+\-]?\d+|\.\d*|[eE][+\-]?\d+)`, LiteralNumberFloat, nil}, | |
48 {`\.\d+([eE][+\-]?\d+)?`, LiteralNumberFloat, nil}, | |
49 {`0[0-7]+`, LiteralNumberOct, nil}, | |
50 {`0[xX][0-9a-fA-F_]+`, LiteralNumberHex, nil}, | |
51 {`0b[01_]+`, LiteralNumberBin, nil}, | |
52 {`(0|[1-9][0-9_]*)`, LiteralNumberInteger, nil}, | |
53 {`'(\\['"\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|[^\\])'`, LiteralStringChar, nil}, | |
54 {"(`)([^`]*)(`)", ByGroups(LiteralString, UsingLexer(TypeRemappingLexer(GoTextTemplate, TypeMapping{{Other, LiteralString, nil}})), LiteralString), nil}, | |
55 {`"(\\\\|\\"|[^"])*"`, LiteralString, nil}, | |
56 {`(<<=|>>=|<<|>>|<=|>=|&\^=|&\^|\+=|-=|\*=|/=|%=|&=|\|=|&&|\|\||<-|\+\+|--|==|!=|:=|\.\.\.|[+\-*/%&])`, Operator, nil}, | |
57 {`([a-zA-Z_]\w*)(\s*)(\()`, ByGroups(NameFunction, UsingSelf("root"), Punctuation), nil}, | |
58 {`[|^<>=!()\[\]{}.,;:]`, Punctuation, nil}, | |
59 {`[^\W\d]\w*`, NameOther, nil}, | |
60 }, | |
61 } | |
62 } | |
63 | |
64 var GoHTMLTemplate = Register(DelegatingLexer(HTML, MustNewXMLLexer( | |
65 embedded, | |
66 "embedded/go_template.xml", | |
67 ).SetConfig( | |
68 &Config{ | |
69 Name: "Go HTML Template", | |
70 Aliases: []string{"go-html-template"}, | |
71 }, | |
72 ))) | |
73 | |
74 var GoTextTemplate = Register(MustNewXMLLexer( | |
75 embedded, | |
76 "embedded/go_template.xml", | |
77 ).SetConfig( | |
78 &Config{ | |
79 Name: "Go Text Template", | |
80 Aliases: []string{"go-text-template"}, | |
81 }, | |
82 )) |