// creates a new Value with a nil group and given value. // TODO: convert this to an interface method on nodes called Value() func numberNodeToValue(t *expr.NumberNode) (v value.Value) { //u.Debugf("nodeToValue() isFloat?%v", t.IsFloat) if t.IsInt { v = value.NewIntValue(t.Int64) } else if t.IsFloat { v = value.NewNumberValue(value.ToFloat64(reflect.ValueOf(t.Text))) } else { u.Errorf("Could not find type? %v", t.Type()) } //u.Debugf("return nodeToValue() %v %T arg:%T", v, v, t) return v }
// creates a new Value with a nil group and given value. // TODO: convert this to an interface method on nodes called Value() func numberNodeToValue(t *expr.NumberNode) (value.Value, bool) { //u.Debugf("nodeToValue() isFloat?%v", t.IsFloat) var v value.Value if t.IsInt { v = value.NewIntValue(t.Int64) } else if t.IsFloat { fv, ok := value.ToFloat64(reflect.ValueOf(t.Text)) if !ok { u.Warnf("Could not perform numeric conversion for %q", t.Text) return value.NilValueVal, false } v = value.NewNumberValue(fv) } else { u.Warnf("Could not find numeric conversion for %v", t.Type()) return value.NilValueVal, false } //u.Debugf("return nodeToValue() %v %T arg:%T", v, v, t) return v, true }