| // Copyright 2018 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package source |
| |
| import ( |
| "fmt" |
| ) |
| |
| var ( |
| namesDiagnosticSeverity [int(SeverityError) + 1]string |
| namesCompletionItemKind [int(PackageCompletionItem) + 1]string |
| ) |
| |
| func init() { |
| namesDiagnosticSeverity[SeverityWarning] = "Warning" |
| namesDiagnosticSeverity[SeverityError] = "Error" |
| |
| namesCompletionItemKind[Unknown] = "Unknown" |
| namesCompletionItemKind[InterfaceCompletionItem] = "interface" |
| namesCompletionItemKind[StructCompletionItem] = "struct" |
| namesCompletionItemKind[TypeCompletionItem] = "type" |
| namesCompletionItemKind[ConstantCompletionItem] = "const" |
| namesCompletionItemKind[FieldCompletionItem] = "field" |
| namesCompletionItemKind[ParameterCompletionItem] = "parameter" |
| namesCompletionItemKind[VariableCompletionItem] = "var" |
| namesCompletionItemKind[FunctionCompletionItem] = "func" |
| namesCompletionItemKind[MethodCompletionItem] = "method" |
| namesCompletionItemKind[PackageCompletionItem] = "package" |
| } |
| |
| func formatEnum(f fmt.State, c rune, i int, names []string, unknown string) { |
| s := "" |
| if i >= 0 && i < len(names) { |
| s = names[i] |
| } |
| if s != "" { |
| fmt.Fprint(f, s) |
| } else { |
| fmt.Fprintf(f, "%s(%d)", unknown, i) |
| } |
| } |
| |
| func parseEnum(s string, names []string) int { |
| for i, name := range names { |
| if s == name { |
| return i |
| } |
| } |
| return 0 |
| } |
| |
| func (e DiagnosticSeverity) Format(f fmt.State, c rune) { |
| formatEnum(f, c, int(e), namesDiagnosticSeverity[:], "DiagnosticSeverity") |
| } |
| |
| func ParseDiagnosticSeverity(s string) DiagnosticSeverity { |
| return DiagnosticSeverity(parseEnum(s, namesDiagnosticSeverity[:])) |
| } |
| |
| func (e CompletionItemKind) Format(f fmt.State, c rune) { |
| formatEnum(f, c, int(e), namesCompletionItemKind[:], "CompletionItemKind") |
| } |
| |
| func ParseCompletionItemKind(s string) CompletionItemKind { |
| return CompletionItemKind(parseEnum(s, namesCompletionItemKind[:])) |
| } |