본문으로 이동

모듈:Deck: 두 판 사이의 차이

Kawa
잔글편집 요약 없음
잔글편집 요약 없음
1번째 줄: 1번째 줄:
local p = {
local p = {}
keys = {
''
}
}


function p.render(f)
function p.render(f)
    local args = f:getParent().args
local args = f:getParent().args
    if args['items'] == nil then
if args['items'] == nil then
        args = f.args
args = f.args
    end
end
 
local deck = mw.html.create('div'):addClass('kawa-deck')
 
if args['gap'] then
deck:css('gap', mw.text.trim(args['gap']))
end


local lines = (args['items'] or ''):gmatch("([^\n]+)")
local lines = (args['items'] or ''):gmatch("([^\n]+)")
16번째 줄: 18번째 줄:
for line in lines do
for line in lines do
line = mw.text.trim(line)
line = mw.text.trim(line)
 
if line ~= '' then
if line ~= '' then
local key, value = line:match('^([%w%s]+)=(.+)$')
local key, value = line:match('^([%w%s]+)=(.+)$')
26번째 줄: 28번째 줄:
end
end
else
else
table.insert(items, {url = line})
table.insert(items, {
url = line
})
end
end
end
end
33번째 줄: 37번째 줄:
-- HTML
-- HTML
local html = ''
local html = ''
 
for _, item in ipairs(items) do
for _, item in ipairs(items) do
local url = item.url or '#'
local url = item.url or '#'
39번째 줄: 43번째 줄:
local title = mw.text.trim(item.title or '')
local title = mw.text.trim(item.title or '')


local iconSpan = mw.html.create('span'):wikitext(icon)
html = html .. '[' .. url .. ' ' .. tostring(mw.html.create('span'):wikitext(icon)) ..
local contentSpan = mw.html.create('span'):wikitext(title)
tostring(mw.html.create('span'):wikitext(title)) .. ']'
end


html = html ..'[' .. url .. ' ' .. tostring(iconSpan) .. tostring(contentSpan) .. ']'
deck:wikitext(html)
end


return f:preprocess('<div class="kawa-deck">' .. html .. '</div>')
return f:preprocess(tostring(deck))
end
end


return p
return p

2026년 5월 27일 (수) 09:41 판

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

local p = {}

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

	local deck = mw.html.create('div'):addClass('kawa-deck')

	if args['gap'] then
		deck:css('gap', mw.text.trim(args['gap']))
	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 html = ''

	for _, item in ipairs(items) do
		local url = item.url or '#'
		local icon = item.icon or ''
		local title = mw.text.trim(item.title or '')

		html = html .. '[' .. url .. ' ' .. tostring(mw.html.create('span'):wikitext(icon)) ..
			tostring(mw.html.create('span'):wikitext(title)) .. ']'
	end

	deck:wikitext(html)

	return f:preprocess(tostring(deck))
end

return p