모듈:KoreanPresidents

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

local p = {}

local presidents = {
	[1]  = { name = "이승만" },
	[2]  = { name = "이승만" },
	[3]  = { name = "이승만" },
	[4]  = { name = "윤보선" },
	[5]  = { name = "박정희" },
	[6]  = { name = "박정희" },
	[7]  = { name = "박정희" },
	[8]  = { name = "박정희" },
	[9]  = { name = "박정희" },
	[10] = { name = "최규하" },
	[11] = { name = "전두환" },
	[12] = { name = "전두환" },
	[13] = { name = "노태우" },
	[14] = { name = "김영삼" },
	[15] = { name = "김대중" },
	[16] = { name = "노무현" },
	[17] = { name = "이명박" },
	[18] = { name = "박근혜" },
	[19] = { name = "문재인" },
	[20] = { name = "윤석열" },
	[21] = { name = "이재명" }
}

local function link(name)
	if not name then
		return "—"
	end
	return string.format("[[%s]]", name)
end

-- 이전 다른 대통령 찾기
local function findPrev(n)
	local curr = presidents[n].name
	for i = n - 1, 1, -1 do
		if presidents[i].name ~= curr then
			return presidents[i].name
		end
	end
end

-- 다음 다른 대통령 찾기
local function findNext(n)
	local curr = presidents[n].name
	for i = n + 1, #presidents do
		if presidents[i].name ~= curr then
			return presidents[i].name
		end
	end
end

local function findRange(n)
	local name = presidents[n].name
	local start = n
	local finish = n

	-- 앞쪽 탐색
	for i = n - 1, 1, -1 do
		if presidents[i].name == name then
			start = i
		else
			break
		end
	end

	-- 뒤쪽 탐색
	for i = n + 1, #presidents do
		if presidents[i].name == name then
			finish = i
		else
			break
		end
	end

	return start, finish
end
function p.render(frame)
	local n = tonumber(frame.args[1])
	if not n or not presidents[n] then
		return "잘못된 대수입니다."
	end

	local prev = link(findPrev(n))
	local curr = link(presidents[n].name)
	local next = link(findNext(n))

	local s, e = findRange(n)
	local termText
	if s == e then
		termText = string.format("제%d대", n)
	else
		termText = string.format("제%d–%d대", s, e)
	end

	return string.format([[{| class="wikitable" style="border: 2px solid #005ba6; text-align: center; margin-left:auto; margin-right:auto; width:100%%; max-width:400px;"
! colspan="3" style="background: linear-gradient(to right,#00467f,#005ba6 20%%,#005ba6 80%%,#00467f); color:#ffc224; padding: 7px;" | 대한민국 대통령
|-
| width="33%%" | 전임<br>%s
| width="33%%" style="background: var(--altbg);" | %s<br>'''%s'''
| width="33%%" | 후임<br>%s
|}
]], prev, termText, curr, next)
end


return p