diff --git a/pkg/yqlib/value_parser.go b/pkg/yqlib/value_parser.go index d08da020..74170b59 100644 --- a/pkg/yqlib/value_parser.go +++ b/pkg/yqlib/value_parser.go @@ -1,8 +1,7 @@ package yqlib -import ( - "strconv" -) +import "strconv" +import "strings" type ValueParser interface { ParseValue(argument string) interface{} @@ -17,10 +16,18 @@ func NewValueParser() ValueParser { func (v *valueParser) ParseValue(argument string) interface{} { var value, err interface{} var inQuotes = len(argument) > 0 && argument[0] == '"' + var isDot = strings.Contains(argument, ".") if !inQuotes { - value, err = strconv.ParseFloat(argument, 64) - if err == nil { - return value + if isDot { + value, err = strconv.ParseFloat(argument, 64) + if err == nil { + return value + } + } else { + value, err = strconv.ParseInt(argument, 10, 64) + if err == nil { + return value + } } value, err = strconv.ParseBool(argument) if err == nil {