diff --git a/ucl/builtins.go b/ucl/builtins.go index 71bad9b..ddb065a 100644 --- a/ucl/builtins.go +++ b/ucl/builtins.go @@ -690,7 +690,7 @@ func filterBuiltin(ctx context.Context, args invocationArgs) (Object, error) { } return &newList, nil case Hashable: - newHash := hashObject{} + newHash := HashObject{} if err := t.Each(func(k string, v Object) error { if m, err := inv.invoke(ctx, args.fork([]Object{StringObject(k), v})); err != nil { return err diff --git a/ucl/eval.go b/ucl/eval.go index ce10b11..b2edca2 100644 --- a/ucl/eval.go +++ b/ucl/eval.go @@ -294,11 +294,11 @@ func (e evaluator) evalListOrHash(ctx context.Context, ec *evalCtx, loh *astList if loh.EmptyList { return &ListObject{}, nil } else if loh.EmptyHash { - return hashObject{}, nil + return HashObject{}, nil } if firstIsHash := loh.Elements[0].Right != nil; firstIsHash { - h := hashObject{} + h := HashObject{} for _, el := range loh.Elements { if el.Right == nil { return nil, errors.New("miss-match of lists and hash") diff --git a/ucl/objs.go b/ucl/objs.go index 0ec03b1..816bbaf 100644 --- a/ucl/objs.go +++ b/ucl/objs.go @@ -98,33 +98,6 @@ func (ss StringListObject) Index(i int) Object { return StringObject(ss[i]) } -type HashObject map[string]Object - -func (ho HashObject) String() string { - return fmt.Sprintf("%v", ho) -} - -func (ho HashObject) Truthy() bool { - return len(ho) > 0 -} - -func (ho HashObject) Len() int { - return len(ho) -} - -func (ho HashObject) Value(k string) Object { - return ho[k] -} - -func (ho HashObject) Each(fn func(k string, v Object) error) error { - for k, v := range ho { - if err := fn(k, v); err != nil { - return err - } - } - return nil -} - type iteratorObject struct { Iterable } @@ -137,9 +110,9 @@ func (i iteratorObject) Truthy() bool { return i.Iterable.HasNext() } -type hashObject map[string]Object +type HashObject map[string]Object -func (s hashObject) String() string { +func (s HashObject) String() string { if len(s) == 0 { return "[:]" } @@ -158,19 +131,19 @@ func (s hashObject) String() string { return sb.String() } -func (s hashObject) Truthy() bool { +func (s HashObject) Truthy() bool { return len(s) > 0 } -func (s hashObject) Len() int { +func (s HashObject) Len() int { return len(s) } -func (s hashObject) Value(k string) Object { +func (s HashObject) Value(k string) Object { return s[k] } -func (s hashObject) Each(fn func(k string, v Object) error) error { +func (s HashObject) Each(fn func(k string, v Object) error) error { for k, v := range s { if err := fn(k, v); err != nil { return err @@ -246,7 +219,7 @@ func toGoValue(obj Object) (interface{}, bool) { xs = append(xs, x) } return xs, true - case hashObject: + case HashObject: xs := make(map[string]interface{}) for k, va := range v { x, ok := toGoValue(va)