Module:glossary

local export = {}

local ugsub = mw.ustring.gsub local umatch = mw.ustring.match

function format_def(term, definition) local anchor = ugsub(term, "%[%[([^%]]+)%]%]", "%1") -- Remove wikilinks anchor = ugsub(anchor, "^%w+:", "") -- Remove interwiki prefixes return "; "..term.." \n: "..definition end

function export.def (frame) local params = { [1] = { required = true, default = "", }, [2] = { required = true, default = "", }, }	local args = require("Module:parameters").process(frame:getParent.args, params) local term = args[1] local definition = args[2] return format_def (term, definition) end

function export.link(frame) local args = frame:getParent.args for k, v in pairs(args) do		if not (k == 1 or k == 2) then require "Module:debug".track "glossary/invalid argument" require "Module:debug".track("glossary/invalid argument/" .. k) mw.log("invalid argument in : " .. k)		end end local anchor, text = args[1] or "", args[2] text = text and not umatch(text, "^%s*$") and text local data = mw.loadData("Module:glossary/data") local formatted_anchor = ugsub(anchor, "[%s_]+", "_") if data[formatted_anchor] then return "" .. (text or anchor) .. "" else local lower_anchor = anchor:ulower formatted_anchor = formatted_anchor:ulower local link = "" .. (text or anchor) .. "" if data[formatted_anchor] or formatted_anchor:find "^_*$" then return link else mw.log("The anchor " .. lower_anchor				.. (lower_anchor ~= anchor and " or " .. anchor or "")				.. " does not exist in Appendix:Glossary.") return link .. "[[Category:Pages linking to anchors not found in Appendix:Glossary|"				.. lower_anchor .. "]]" end end end

return export