diff options
| author | Paul Duncan <pabs@pablotron.org> | 2022-02-02 21:45:23 -0500 | 
|---|---|---|
| committer | Paul Duncan <pabs@pablotron.org> | 2022-02-02 21:45:23 -0500 | 
| commit | e3a6bc8502a0366aee9040e938789a6016e2fa4a (patch) | |
| tree | 1d0098dec135d77dd1c8d4a8b0c54bf2aa1141fa /internal/cpe/part.go | |
| parent | b6496c2d20904e665116133a9e9bf9ae6e3b45b8 (diff) | |
| download | cvez-e3a6bc8502a0366aee9040e938789a6016e2fa4a.tar.xz cvez-e3a6bc8502a0366aee9040e938789a6016e2fa4a.zip  | |
internal/cpe: add token.go, part.go, and tests
Diffstat (limited to 'internal/cpe/part.go')
| -rw-r--r-- | internal/cpe/part.go | 41 | 
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/cpe/part.go b/internal/cpe/part.go new file mode 100644 index 0000000..ef91f7c --- /dev/null +++ b/internal/cpe/part.go @@ -0,0 +1,41 @@ +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)) +  } +}  | 
