feat(strct-tags): add support for tag options (#126)
* feat(struct_tags): add options support * refactor(struct-tags): give input field better name * feat(struct-tag): add default option * refactor: make it work on neovim version below 0.12 * chore(struct-tags): update the demo * refactor: unite struct_tags util with main logic
This commit is contained in:
parent
0de1892ca9
commit
7a18d9f7bd
19 changed files with 301 additions and 15 deletions
68
spec/unit/struct_tag_test.lua
Normal file
68
spec/unit/struct_tag_test.lua
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
local t = require "spec.testutils"
|
||||
local _, T, st = t.setup "struct_tags"
|
||||
|
||||
st["should parse tags"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args { "json", "yaml", "etc" }
|
||||
|
||||
t.eq(out.tags, "json,yaml,etc")
|
||||
t.eq(out.options, "")
|
||||
end
|
||||
|
||||
st["should parse tags separated by commas"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args { "json,yaml,etc" }
|
||||
|
||||
t.eq(out.tags, "json,yaml,etc")
|
||||
t.eq(out.options, "")
|
||||
end
|
||||
|
||||
st["should parse tags separated by command and spaces"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args {
|
||||
"json,yaml",
|
||||
"json=omitempty",
|
||||
"xml=something",
|
||||
}
|
||||
|
||||
t.eq(out.tags, "json,yaml,xml")
|
||||
t.eq(out.options, "json=omitempty,xml=something")
|
||||
end
|
||||
|
||||
st["should parse tag with an option"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args {
|
||||
"json=omitempty",
|
||||
"xml",
|
||||
"xml=theoption",
|
||||
}
|
||||
|
||||
t.eq(out.tags, "json,xml")
|
||||
t.eq(out.options, "json=omitempty,xml=theoption")
|
||||
end
|
||||
|
||||
st["should parse tags with an option"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args { "json=omitempty", "yaml" }
|
||||
|
||||
t.eq(out.tags, "json,yaml")
|
||||
t.eq(out.options, "json=omitempty")
|
||||
end
|
||||
|
||||
st["should parse tags with an option separated with comma"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args { "json=omitempty,yaml" }
|
||||
|
||||
t.eq(out.tags, "json,yaml")
|
||||
t.eq(out.options, "json=omitempty")
|
||||
end
|
||||
|
||||
st["should parse tags with options specified separately"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args { "json", "yaml", "json=omitempty" }
|
||||
|
||||
t.eq(out.tags, "json,yaml")
|
||||
t.eq(out.options, "json=omitempty")
|
||||
end
|
||||
|
||||
st["should parse tags with options specified separately and separated by comma"] = function()
|
||||
local out = require("gopher.struct_tags").parse_args { "json,yaml,json=omitempty" }
|
||||
|
||||
t.eq(out.tags, "json,yaml")
|
||||
t.eq(out.options, "json=omitempty")
|
||||
end
|
||||
|
||||
return T
|
||||
|
|
@ -46,4 +46,14 @@ utils["should add .indent() 2 tabs"] = function()
|
|||
t.eq("\t\t", u.indent(line, indent))
|
||||
end
|
||||
|
||||
utils["should .list_unique on list with duplicates"] = function()
|
||||
local u = require "gopher._utils"
|
||||
t.eq({ "json", "xml" }, u.list_unique { "json", "xml", "json" })
|
||||
end
|
||||
|
||||
utils["should .list_unique on list with no duplicates"] = function()
|
||||
local u = require "gopher._utils"
|
||||
t.eq({ "json", "xml" }, u.list_unique { "json", "xml" })
|
||||
end
|
||||
|
||||
return T
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue