Module:Glossary

From Arknights Terra Wiki
Jump to navigation Jump to search

The Lua source code for the display of in-game terms through Template:Glossary.


local p = {}
local data = {
	buff = mw.loadData('Module:Glossary/buff'),
	debuff = mw.loadData('Module:Glossary/debuff'),
	elemental = mw.loadData('Module:Glossary/elemental'),
	misc = mw.loadData('Module:Glossary/misc'),
	riic = mw.loadData('Module:Glossary/riic'),
	status = mw.loadData('Module:Glossary/status'),
}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
function p.main(frame)
	local args = getArgs(frame, {
		wrappers = 'Template:Glossary'
	})
	return p._main(args)
end
function p._main(args)
	local key = args[1]
	local obj
	for _, m in pairs(data) do
		obj = m[key]
		if obj then break end
	end
	if not obj then
		return '' -- no entry.
	end
	local name = obj.name
	local title = obj.title
	local desc = obj.desc
	local link = obj.link
	local pagename = link or name
	local text = args[2] or title or name
	local nolink = yesno(args.nolink)
	local attrs = {
		['data-name'] = name,
		['data-title'] = title,
		['data-desc'] = desc,
	}
	local container = mw.html.create('')
	local stooltip = container:tag('span')
	:addClass('glossary')
	:attr(attrs)
	:css('text-decoration', 'underline')
	if nolink or link == 'none' then
		stooltip:wikitext(text)
	else
		stooltip:wikitext('[['..pagename..'|'..text..']]')
	end
	return container
end

return p