...

Source file src/github.com/lucasb-eyer/go-colorful/hexcolor.go

Documentation: github.com/lucasb-eyer/go-colorful

     1  package colorful
     2  
     3  import (
     4  	"database/sql/driver"
     5  	"encoding/json"
     6  	"fmt"
     7  	"reflect"
     8  )
     9  
    10  // A HexColor is a Color stored as a hex string "#rrggbb". It implements the
    11  // database/sql.Scanner, database/sql/driver.Value,
    12  // encoding/json.Unmarshaler and encoding/json.Marshaler interfaces.
    13  type HexColor Color
    14  
    15  type errUnsupportedType struct {
    16  	got  interface{}
    17  	want reflect.Type
    18  }
    19  
    20  func (hc *HexColor) Scan(value interface{}) error {
    21  	s, ok := value.(string)
    22  	if !ok {
    23  		return errUnsupportedType{got: reflect.TypeOf(value), want: reflect.TypeOf("")}
    24  	}
    25  	c, err := Hex(s)
    26  	if err != nil {
    27  		return err
    28  	}
    29  	*hc = HexColor(c)
    30  	return nil
    31  }
    32  
    33  func (hc *HexColor) Value() (driver.Value, error) {
    34  	return Color(*hc).Hex(), nil
    35  }
    36  
    37  func (e errUnsupportedType) Error() string {
    38  	return fmt.Sprintf("unsupported type: got %v, want a %s", e.got, e.want)
    39  }
    40  
    41  func (hc *HexColor) UnmarshalJSON(data []byte) error {
    42  	var hexCode string
    43  	if err := json.Unmarshal(data, &hexCode); err != nil {
    44  		return err
    45  	}
    46  
    47  	var col, err = Hex(hexCode)
    48  	if err != nil {
    49  		return err
    50  	}
    51  	*hc = HexColor(col)
    52  	return nil
    53  }
    54  
    55  func (hc HexColor) MarshalJSON() ([]byte, error) {
    56  	return json.Marshal(Color(hc).Hex())
    57  }
    58  
    59  // Decode - deserialize function for https://github.com/kelseyhightower/envconfig
    60  func (hc *HexColor) Decode(hexCode string) error {
    61  	var col, err = Hex(hexCode)
    62  	if err != nil {
    63  		return err
    64  	}
    65  	*hc = HexColor(col)
    66  	return nil
    67  }
    68  

View as plain text