diff --git a/wrapper.go b/wrapper.go index a5afdf6..15ff1f1 100644 --- a/wrapper.go +++ b/wrapper.go @@ -249,6 +249,8 @@ func (s *State) PushValue(v any) error { return s.pushFloatSlice(val) case []any: return s.pushAnySlice(val) + case []map[string]any: + return s.pushMapSlice(val) case map[string]string: return s.pushStringMap(val) case map[string]int: @@ -810,3 +812,15 @@ func (s *State) CallGlobal(name string, args ...any) ([]any, error) { s.SetTop(baseTop) return results, nil } + +func (s *State) pushMapSlice(arr []map[string]any) error { + s.CreateTable(len(arr), 0) + for i, m := range arr { + s.PushNumber(float64(i + 1)) + if err := s.PushValue(m); err != nil { + return err + } + s.SetTable(-3) + } + return nil +}