본문으로 이동

모듈:Deck

Kawa

이 모듈에 대한 설명문서는 모듈:Deck/설명문서에서 만들 수 있습니다

local p = {}

function p.render(f)
	local args = f:getParent().args
	if args['items'] == nil then
		args = f.args
	end

	local lines = (args['items'] or ''):gmatch("([^\n]+)")
	local items = {}

	for line in lines do
		line = mw.text.trim(line)

		if line ~= '' then
			local key, value = line:match('^([%w%s]+)=(.+)$')
			if key and value then
				key = mw.text.trim(key):lower()
				value = mw.text.trim(value)
				if key ~= '' then
					items[#items][key] = value
				end
			else
				table.insert(items, {
					url = line
				})
			end
		end
	end

	-- HTML
	local decks = {''}

	for _, item in ipairs(items) do
		local url = item.url or '#'
		if url:match('^-+$') then
			decks[#decks + 1] = ''
		else
			local icon = item.icon or ''
			local title = mw.text.trim(item.title or '')

			local wikitext = '<span>' .. icon .. '</span>' .. '<span>' .. title .. '</span>'

			decks[#decks] = decks[#decks] .. '[' .. url .. ' ' .. wikitext .. ']'
		end
	end

	local html = ''
	for _, deck in ipairs(decks) do
		html = html .. '<div class="kawa-deck">' .. deck .. '</div>'
	end

	return f:preprocess(html)
end

return p