Switch to exposing the existing HashObject
All checks were successful
Build / build (push) Successful in 2m5s
All checks were successful
Build / build (push) Successful in 2m5s
This commit is contained in:
parent
03e6878524
commit
41b4fdb003
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
41
ucl/objs.go
41
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)
|
||||
|
|
Loading…
Reference in a new issue