模块:Tile

来自异世界百科
落雨枫讨论 | 贡献2022年5月24日 (二) 08:41的版本 (修复bug)

此模块的文档可以在模块:Tile/doc创建

local p = {}

local function loadConfig(titleText)
	local title = mw.title.new(titleText)
	if (not title.exists and title.contentModel ~= "json") then
		return nil
	end
	local content = title:getContent()
	return mw.text.jsonDecode(content)
end

local function getDayConfig(conf, frame)
	-- 先根据日期判断	
	local currentDate = frame:callParserFunction("#timel", "n-j")
	dayConfig = conf[currentDate]
	if (dayConfig ~= nil) then  -- 输出当前日期的磁贴
		return dayConfig
	end
	-- 然后判断是周几
	local currentDOW = frame:callParserFunction("#timel", "D")
	dayConfig = conf[currentDOW]
	if (dayConfig ~= nil) then  -- 输出当前日期的磁贴
		return dayConfig
	end
	-- 不存在当日配置
	return nil
end

local function getTileArgs(tileConfig)
	local tileArgs = {}
	if tileConfig.cover ~= nil then
		tileArgs.cover = tileConfig.cover
	end
	if tileConfig.page ~= nil then
		tileArgs.href = "[[" .. tileConfig.page .. "]]"
	end
	if tileConfig.icon ~= nil then
		tileArgs.icon = "fa fa-fw fa-" .. tileConfig.icon
	end
end

function p.perDay(frame)
	local configTitle = frame.args[1] or frame.args.conf
	local appendTile = frame.args[2] or frame.args.appendTile
	local defaultTile = frame.args[3] or frame.args.default
	local conf = loadConfig(configTitle)
	local tileConfig = getDayConfig(conf, frame)
	if tileConfig ~= nil then
		local tileArgs = getTileArgs(tileConfig)
		return '<tilegroup size="sm-12 md-6">' ..
			frame:extensionTag('tile', tileConfig.title, tileArgs) ..
			appendTile ..
			'</tilegroup>'
	else
		return '<tilegroup size="sm-12 md-6">' .. defaultTile .. '</tilegroup>'	
	end
end

return p