Module:Glossary

local export = {}

local gsub = mw.ustring.gsub

function format_def (term, definition) local anchor = gsub(term, "%[%[([^%]]+)%]%]", "%1") -- Remove wikilinks anchor = gsub(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] if text and text:match "^%s*$" then text = nil end -- This won't work if the initial letter is non-ASCII. local lower_anchor = anchor:lower local data = mw.loadData("Module:glossary/data") if data[anchor] then return "" .. (text or anchor) .. "" else local link = "" .. (text or anchor) .. "" if data[lower_anchor] or lower_anchor:find "^%s*$" 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