提交 69374b30 作者: Brian Tiger Chow 提交者: Juan Batiz-Benet

refactor(commands/optionvalue) use

@mappum this optionvalue is a really great abstraction. It makes
maintenance super simple!

@jbenet @whyrusleeping
上级 71e92dac
...@@ -78,60 +78,59 @@ func (ov OptionValue) Found() bool { ...@@ -78,60 +78,59 @@ func (ov OptionValue) Found() bool {
} }
// value accessor methods, gets the value as a certain type // value accessor methods, gets the value as a certain type
func (ov OptionValue) Bool() (bool, error) { func (ov OptionValue) Bool() (value bool, found bool, err error) {
if !ov.found {
return false, false, nil
}
val, ok := ov.value.(bool) val, ok := ov.value.(bool)
if !ok { if !ok {
var err error err = CastError
if ov.value != nil {
err = errors.New("error casting to bool")
}
return false, err
} }
return val, nil return val, ov.found, err
} }
func (ov OptionValue) Int() (int, error) {
func (ov OptionValue) Int() (val int, found bool, err error) {
if !ov.found {
return 0, false, nil
}
val, ok := ov.value.(int) val, ok := ov.value.(int)
if !ok { if !ok {
var err error err = CastError
if ov.value != nil {
err = errors.New("error casting to int")
}
return 0, err
} }
return val, nil return val, ov.found, err
} }
func (ov OptionValue) Uint() (uint, error) {
func (ov OptionValue) Uint() (val uint, found bool, err error) {
if !ov.found {
return 0, false, nil
}
val, ok := ov.value.(uint) val, ok := ov.value.(uint)
if !ok { if !ok {
var err error err = CastError
if ov.value != nil {
err = errors.New("error casting to uint")
}
return 0, err
} }
return val, nil return val, ov.found, err
} }
func (ov OptionValue) Float() (float64, error) {
func (ov OptionValue) Float() (val float64, found bool, err error) {
if !ov.found {
return 0, false, nil
}
val, ok := ov.value.(float64) val, ok := ov.value.(float64)
if !ok { if !ok {
var err error err = CastError
if ov.value != nil {
err = errors.New("error casting to float64")
}
return 0.0, err
} }
return val, nil return val, ov.found, err
} }
func (ov OptionValue) String() (string, error) {
func (ov OptionValue) String() (val string, found bool, err error) {
if !ov.found {
return "", false, nil
}
val, ok := ov.value.(string) val, ok := ov.value.(string)
if !ok { if !ok {
var err error err = CastError
if ov.value != nil {
err = errors.New("error casting to string")
}
return "", err
} }
return val, nil return val, ov.found, err
} }
// Flag names // Flag names
......
...@@ -108,13 +108,13 @@ func (r *response) Marshal() ([]byte, error) { ...@@ -108,13 +108,13 @@ func (r *response) Marshal() ([]byte, error) {
return []byte{}, nil return []byte{}, nil
} }
if !r.req.Option(EncShort).Found() { enc, found, err := r.req.Option(EncShort).String()
return nil, fmt.Errorf("No encoding type was specified")
}
enc, err := r.req.Option(EncShort).String()
if err != nil { if err != nil {
return nil, err return nil, err
} }
if !found {
return nil, fmt.Errorf("No encoding type was specified")
}
encType := EncodingType(strings.ToLower(enc)) encType := EncodingType(strings.ToLower(enc))
var marshaller Marshaller var marshaller Marshaller
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论