diff --git a/pkg/yqlib/doc/usage/lua.md b/pkg/yqlib/doc/usage/lua.md index d7e748cc..8944b2fe 100644 --- a/pkg/yqlib/doc/usage/lua.md +++ b/pkg/yqlib/doc/usage/lua.md @@ -17,7 +17,7 @@ yq -o=lua '.' sample.yml will output ```lua return { - ["country"] = "Australia"; + ["country"] = "Australia"; -- this place ["cities"] = { "Sydney", "Melbourne", @@ -47,7 +47,7 @@ yq -o=lua '.' sample.yml will output ```lua return { - country = "Australia"; + country = "Australia"; -- this place cities = { "Sydney", "Melbourne", diff --git a/pkg/yqlib/encoder_lua.go b/pkg/yqlib/encoder_lua.go index 8506348d..0e683953 100644 --- a/pkg/yqlib/encoder_lua.go +++ b/pkg/yqlib/encoder_lua.go @@ -134,6 +134,13 @@ func (le *luaEncoder) encodeArray(writer io.Writer, node *yaml.Node) error { if err != nil { return err } + if child.LineComment != "" { + sansPrefix, _ := strings.CutPrefix(child.LineComment, "#") + err = writeString(writer, " --"+sansPrefix) + if err != nil { + return err + } + } } le.indent-- if len(node.Content) != 0 { @@ -214,6 +221,20 @@ func (le *luaEncoder) encodeMap(writer io.Writer, node *yaml.Node) error { } } } + if child.LineComment != "" { + sansPrefix, _ := strings.CutPrefix(child.LineComment, "#") + err = writeString(writer, strings.Repeat(" ", i%2)+"--"+sansPrefix) + if err != nil { + return err + } + if (i % 2) == 0 { + // newline and indent after comments on keys + err = le.writeIndent(writer) + if err != nil { + return err + } + } + } } le.indent-- if len(node.Content) != 0 { diff --git a/pkg/yqlib/lua_test.go b/pkg/yqlib/lua_test.go index 1625278d..ee8f31b9 100644 --- a/pkg/yqlib/lua_test.go +++ b/pkg/yqlib/lua_test.go @@ -19,9 +19,8 @@ cities: - Melbourne - Brisbane - Perth`, - // TODO comments, -- this place expected: `return { - ["country"] = "Australia"; + ["country"] = "Australia"; -- this place ["cities"] = { "Sydney", "Melbourne", @@ -43,7 +42,7 @@ cities: - Brisbane - Perth`, expected: `return { - country = "Australia"; + country = "Australia"; -- this place cities = { "Sydney", "Melbourne",