Module:User:Lunabunn/Q
Appearance
- This module sandbox lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • transclusions • testcases • sandbox
local export = {}
local function eval(key, d_work, defaults, args)
local d = d_work[key] or defaults[key]
if d == nil then
return args[key]
end
local function fetch(var)
if var == key then
return args[var]
else
return d_work[var] or defaults[var] or args[var]
end
end
return d:gsub("{{([a-zA-Z_0-9]-):([a-zA-Z_0-9]-)}}", function (var, ind)
var = fetch(var)
return var and var[ind]
end):gsub("{{([a-zA-Z_0-9]-)}}", fetch)
end
function export.make(frame)
local parent_args = frame:getParent().args
local params = {
[1] = { required = true, type = "language", default = "und" },
["year"] = {},
[2] = { alias_of = "year" },
["author"] = {},
[3] = { alias_of = "author" },
["title"] = {},
[4] = { alias_of = "title" },
["object"] = {},
["section"] = {},
["titlestyle"] = {},
}
local args = require("Module:parameters").process(parent_args, params, true)
local data = mw.loadData("Module:User:Lunabunn/Q/" .. args[1]:getCode() .. "/data")
while data.author_aliases[args.author] do
args.author = data.author_aliases[args.author]
end
local d_author = data[args.author or false]
while d_author.work_aliases[args.title] do
args.title = d_author.work_aliases[args.title]
end
local d_work = d_author.works[args.title]
local defaults = d_author.defaults
args.year = eval("year", d_work, defaults, args)
args.title = eval("title", d_work, defaults, args)
args.object = eval("object", d_work, defaults, args)
args.section = eval("section", d_work, defaults, args)
args.titlestyle = d_work.titlestyle or defaults.titlestyle or args.titlestyle
return require("Module:User:Lunabunn/quote").Q(frame, args)
end
return export