This file is indexed.

/usr/share/gocode/src/gopkg.in/gcfg.v1/types/enum.go is in golang-gopkg-gcfg.v1-dev 0.0~git20150907.0.0ef1a85-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package types

import (
	"fmt"
	"reflect"
	"strings"
)

// EnumParser parses "enum" values; i.e. a predefined set of strings to
// predefined values.
type EnumParser struct {
	Type      string // type name; if not set, use type of first value added
	CaseMatch bool   // if true, matching of strings is case-sensitive
	// PrefixMatch bool
	vals map[string]interface{}
}

// AddVals adds strings and values to an EnumParser.
func (ep *EnumParser) AddVals(vals map[string]interface{}) {
	if ep.vals == nil {
		ep.vals = make(map[string]interface{})
	}
	for k, v := range vals {
		if ep.Type == "" {
			ep.Type = reflect.TypeOf(v).Name()
		}
		if !ep.CaseMatch {
			k = strings.ToLower(k)
		}
		ep.vals[k] = v
	}
}

// Parse parses the string and returns the value or an error.
func (ep EnumParser) Parse(s string) (interface{}, error) {
	if !ep.CaseMatch {
		s = strings.ToLower(s)
	}
	v, ok := ep.vals[s]
	if !ok {
		return false, fmt.Errorf("failed to parse %s %#q", ep.Type, s)
	}
	return v, nil
}