Refactor restricted option sets
Added utility function must_contain which will crawl through a set and emit an error if the value is not contained in it.
This commit is contained in:
parent
78a1948545
commit
1742b74d5a
1 changed files with 16 additions and 3 deletions
|
@ -7,17 +7,30 @@ local ANCHOR_SEPARATOR = "_"
|
||||||
-- TODO zettel_root = vim.g["zettel_root"] or vim.b["zettel_root"] or "~/documents/notes",
|
-- TODO zettel_root = vim.g["zettel_root"] or vim.b["zettel_root"] or "~/documents/notes",
|
||||||
-- TODO zettel_anchor_pattern = regex? -> needs custom creation function in `create_anchor`
|
-- TODO zettel_anchor_pattern = regex? -> needs custom creation function in `create_anchor`
|
||||||
|
|
||||||
|
-- constricted option sets
|
||||||
|
local ZETTEL_LINK_STYLE_OPTIONS = {markdown = true, wiki = true}
|
||||||
|
|
||||||
|
local function must_contain(set, value, name)
|
||||||
|
if type(set) ~= "table" then return false end
|
||||||
|
if not set[value] then
|
||||||
|
local allvalues = ""
|
||||||
|
for n, _ in pairs(set) do allvalues = n .. ", " .. allvalues end
|
||||||
|
error((name or "value") .. " " .. value .. " must be one of " ..
|
||||||
|
allvalues:sub(1, -3))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function Opt.zettel()
|
function Opt.zettel()
|
||||||
local options = {}
|
local options = {}
|
||||||
options.extension =
|
options.extension =
|
||||||
vim.g["zettel_extension"] or vim.b["zettel_extension"] or
|
vim.g["zettel_extension"] or vim.b["zettel_extension"] or
|
||||||
ZETTEL_EXTENSION
|
ZETTEL_EXTENSION
|
||||||
|
|
||||||
options.link_style = vim.g["zettel_link_style"] or
|
options.link_style = vim.g["zettel_link_style"] or
|
||||||
vim.b["zettel_link_style"] or ZETTEL_LINK_STYLE
|
vim.b["zettel_link_style"] or ZETTEL_LINK_STYLE
|
||||||
|
must_contain(ZETTEL_LINK_STYLE_OPTIONS, options.link_style,
|
||||||
|
"zettel_link_style")
|
||||||
|
|
||||||
if options.link_style ~= "wiki" and options.link_style ~= "markdown" then
|
|
||||||
error("zettel_link_style can only be set to markdown or wiki.")
|
|
||||||
end
|
|
||||||
return options
|
return options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue