package cpe //go:generate stringer -linecomment -type=Part import ( "fmt" ) // CPE part type Part byte const ( ApplicationPart Part = 'a' // a OperatingSystemPart Part = 'o' // o HardwarePart Part = 'h' // h AnyPart Part = '*' // * NAPart Part = '-' // - ) // create new part from token func newPart(t token) (Part, error) { switch t.Type { case anyToken: return AnyPart, nil case naToken: return NAPart, nil case valToken: switch t.Val { case "a": return ApplicationPart, nil case "o": return OperatingSystemPart, nil case "h": return HardwarePart, nil default: return 0, fmt.Errorf("unknown part: \"%s\"", t.Val) } default: return 0, fmt.Errorf("unknown token type: 0x%02x", byte(t.Type)) } }