jsonenums/example/testcasing_jsonenums.go
2016-07-29 15:31:48 -04:00

79 lines
1.9 KiB
Go

// generated by jsonenums -type=TestCasing; DO NOT EDIT
package main
import (
"database/sql/driver"
"encoding/json"
"fmt"
"github.com/pkg/errors"
)
var (
_TestCasingNameToValue = map[string]TestCasing{
"case_madness_a": caseMadnessA,
"case_ma_dn_e_es_b": caseMaDnEEsB,
"normal_case_example": normalCaseExample,
}
_TestCasingValueToName = map[TestCasing]string{
caseMadnessA: "case_madness_a",
caseMaDnEEsB: "case_ma_dn_e_es_b",
normalCaseExample: "normal_case_example",
}
)
func init() {
var v TestCasing
if _, ok := interface{}(v).(fmt.Stringer); ok {
_TestCasingNameToValue = map[string]TestCasing{
interface{}(caseMadnessA).(fmt.Stringer).String(): caseMadnessA,
interface{}(caseMaDnEEsB).(fmt.Stringer).String(): caseMaDnEEsB,
interface{}(normalCaseExample).(fmt.Stringer).String(): normalCaseExample,
}
}
}
// MarshalJSON is generated so TestCasing satisfies json.Marshaler.
func (r TestCasing) MarshalJSON() ([]byte, error) {
if s, ok := interface{}(r).(fmt.Stringer); ok {
return json.Marshal(s.String())
}
s, ok := _TestCasingValueToName[r]
if !ok {
return nil, fmt.Errorf("invalid TestCasing: %d", r)
}
return json.Marshal(s)
}
// UnmarshalJSON is generated so TestCasing satisfies json.Unmarshaler.
func (r *TestCasing) UnmarshalJSON(data []byte) error {
var s string
if err := json.Unmarshal(data, &s); err != nil {
return fmt.Errorf("TestCasing should be a string, got %s", data)
}
v, ok := _TestCasingNameToValue[s]
if !ok {
return fmt.Errorf("invalid TestCasing %q", s)
}
*r = v
return nil
}
//Scan an input string into this structure for use with GORP
func (r *TestCasing) Scan(i interface{}) error {
switch i.(type) {
case string:
r.UnmarshalJSON([]byte(i.(string)))
default:
return errors.Errorf("Can't scan %T into type %T", i, r)
}
return nil
}
func (r TestCasing) Value() (driver.Value, error) {
bytes, err := r.MarshalJSON()
return string(bytes), err
}