github.com/qiniu/dyn@v1.3.0/cmdarg/unmarshal.go (about) 1 package cmdarg 2 3 import ( 4 "strings" 5 6 "github.com/qiniu/dyn/jsonext" 7 ) 8 9 // --------------------------------------------------------------------------- 10 11 func UnmarshalText(text string) (v interface{}, err error) { 12 13 if strings.HasPrefix(text, "$(") { 14 err = jsonext.UnmarshalString(text, &v) 15 return 16 } 17 return text, nil 18 } 19 20 func Unmarshal(text string) (v interface{}, err error) { 21 22 if len(text) == 0 { 23 return "", nil 24 } 25 26 c := text[0] // true, false, null 27 if c <= 33 || (c >= 'A' && c <= 'Z') || c == '/' { 28 return text, nil 29 } 30 31 if c >= 'a' && c <= 'z' { 32 switch text { 33 case "true": 34 return true, nil 35 case "false": 36 return false, nil 37 case "null": 38 return nil, nil 39 default: 40 return text, nil 41 } 42 } 43 44 err = jsonext.UnmarshalString(text, &v) 45 return 46 } 47 48 // ---------------------------------------------------------------------------