模块:Gadget-legend

维基百科,自由的百科全书
(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
跳转到导航 跳转到搜索

require('strict')
local getArgs -- lazily initialized
local lan = require('Module:Lan')

local config = {
	default = {
		abbr = lan._main({ ['zh-hans'] = '预', ['zh-hant'] = '預' }, mw.getCurrentFrame()),
		desc = lan._main({ ['zh-hans'] = '小工具默认启用', ['zh-hant'] = '小工具預設啟用' }, mw.getCurrentFrame()),
	},
	extwiki = {
		abbr = '跨',
		desc = lan._main({ ['zh-hans'] = '小工具会加载其他维基媒体wiki站点的脚本', ['zh-hant'] = '小工具會載入其他維基媒體wiki站點的指令碼' }, mw.getCurrentFrame()),
	},
	external = {
		abbr = '外',
		desc = lan._main({ ['zh-hans'] = '小工具会加载外部网站(非WMF站点)内容', ['zh-hant'] = '小工具會載入外部網站(非WMF站點)內容' }, mw.getCurrentFrame()),
	},
	user = {
		abbr = '用',
		desc = lan._main({ ['zh-hans'] = '小工具会加载用户脚本', ['zh-hant'] = '小工具會載入使用者指令碼', ['zh-hk'] = '小工具會載入用戶指令碼' }, mw.getCurrentFrame()),
	},
}

local p = {}

local function listbox()
	local list = mw.html.create('dl')
	for key, value in pairs(config) do
		list:tag('dt')
			:css('float', 'left')
			:css('margin', '0 0.5em 0 0')
			:css('line-height', '1.3em')
			:wikitext(value.abbr)
			:done()
		:tag('dd')
			:css('margin-left', '1.5em')
			:css('line-height', '1.3em')
			:wikitext(value.desc)
	end

	local root = mw.html.create('div')
	root
		:addClass('mw-collapsible')
		:css('float', 'right')
		:css('margin-left', '1em')
		:css('margin-bottom', '0')
		:css('clear', 'right')
		:css('font-size', '85%')
		:css('line-height', '1.2em')
		:css('padding', '0.5em')
		:css('color', 'inherit')
		:css('background-color', 'var(--background-color-base, #fff)')
		:css('position', 'relative')
		:css('z-index', '1')
		:css('border', '1px solid var(--border-color-subtle, #c8ccd1)')
		:tag('strong')
			:wikitext(lan._main({ ['zh-hans'] = '小工具图例:', ['zh-hant'] = '小工具圖例:' }, mw.getCurrentFrame()))
			:done()
		:tag('div')
			:addClass('mw-collapsible-content')
			:node(list)
	return tostring(root)
end

local function list()
	local root = mw.html.create('ul')
	for key, value in pairs(config) do
		root:tag('li')
			:node(p.get(key))
			:wikitext(':' .. value.desc)
	end
	return tostring(root)
end

function p.get(key)
	local entry = config[key]
	if entry == nil then
		return ''
	end

	local result = mw.html.create('sup')
	result:tag('abbr')
		:attr('title', entry.desc)
		:wikitext(entry.abbr)
		:allDone()
	return tostring(result)
end

function p.main(frame)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	local args = getArgs(frame)
	if args[1] == 'listbox' then
		return listbox()
	elseif args[1] == 'list' then
		return list()
	elseif args[1] == 'get' then
		return p.get(args[2])
	else
		error('模式未知')
	end
end
	
return p