diff --git a/go.sum b/go.sum index 7638c97c..195442fd 100644 --- a/go.sum +++ b/go.sum @@ -57,13 +57,13 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= diff --git a/pkg/yqlib/encoder_lua.go b/pkg/yqlib/encoder_lua.go index 0afc2cea..b600371d 100644 --- a/pkg/yqlib/encoder_lua.go +++ b/pkg/yqlib/encoder_lua.go @@ -306,22 +306,25 @@ func (le *luaEncoder) encodeAny(writer io.Writer, node *CandidateNode) error { } } -func (le *luaEncoder) Encode(writer io.Writer, node *CandidateNode) error { - if !le.globals && node.Parent == nil { - err := writeString(writer, le.docPrefix) - if err != nil { - return err - } - } - if err := le.encodeAny(writer, node); err != nil { +func (le *luaEncoder) encodeTopLevel(writer io.Writer, node *CandidateNode) error { + err := writeString(writer, le.docPrefix) + if err != nil { return err } - - if !le.globals && node.Parent == nil { - err := writeString(writer, le.docSuffix) - if err != nil { - return err - } + err = le.encodeAny(writer, node) + if err != nil { + return err } - return nil + return writeString(writer, le.docSuffix) +} + +func (le *luaEncoder) Encode(writer io.Writer, node *CandidateNode) error { + + if le.globals { + if node.Kind != MappingNode { + return fmt.Errorf("--lua-global requires a top level MappingNode") + } + return le.encodeMap(writer, node, true) + } + return le.encodeTopLevel(writer, node) } diff --git a/pkg/yqlib/lua_test.go b/pkg/yqlib/lua_test.go index f896047e..bb36e9cc 100644 --- a/pkg/yqlib/lua_test.go +++ b/pkg/yqlib/lua_test.go @@ -11,47 +11,47 @@ import ( ) var luaScenarios = []formatScenario{ - // { - // description: "Basic input example", - // input: `return { - // ["country"] = "Australia"; -- this place - // ["cities"] = { - // "Sydney", - // "Melbourne", - // "Brisbane", - // "Perth", - // }; - // }; - // `, - // expected: `country: Australia - // cities: - // - Sydney - // - Melbourne - // - Brisbane - // - Perth - // `, - // }, - // { - // description: "Basic output example", - // scenarioType: "encode", - // input: `--- - // country: Australia # this place - // cities: - // - Sydney - // - Melbourne - // - Brisbane - // - Perth`, - // expected: `return { - // ["country"] = "Australia"; -- this place - // ["cities"] = { - // "Sydney", - // "Melbourne", - // "Brisbane", - // "Perth", - // }; - // }; - // `, - // }, + { + description: "Basic input example", + input: `return { + ["country"] = "Australia"; -- this place + ["cities"] = { + "Sydney", + "Melbourne", + "Brisbane", + "Perth", + }; +}; +`, + expected: `country: Australia +cities: + - Sydney + - Melbourne + - Brisbane + - Perth +`, + }, + { + description: "Basic output example", + scenarioType: "encode", + input: `--- +country: Australia # this place +cities: +- Sydney +- Melbourne +- Brisbane +- Perth`, + expected: `return { + ["country"] = "Australia"; -- this place + ["cities"] = { + "Sydney", + "Melbourne", + "Brisbane", + "Perth", + }; +}; +`, + }, { description: "Basic roundtrip", skipDoc: true,