모듈:KoreanPresidents: 두 판 사이의 차이
편집 요약 없음 |
태그: 편집 취소 |
||
| (같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
| 26번째 줄: | 26번째 줄: | ||
local function link(name) | local function link(name) | ||
if not name | if not name then | ||
return "—" | return "—" | ||
end | end | ||
| 32번째 줄: | 32번째 줄: | ||
end | 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) | function p.render(frame) | ||
local n = tonumber(frame.args[1]) | local n = tonumber(frame.args[1]) | ||
| 38번째 줄: | 82번째 줄: | ||
return "잘못된 대수입니다." | return "잘못된 대수입니다." | ||
end | end | ||
local prev = link( | local prev = link(findPrev(n)) | ||
local curr = link(presidents[n].name) | local curr = link(presidents[n].name) | ||
local next = link( | 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;" | return string.format([[{| class="wikitable" style="border: 2px solid #005ba6; text-align: center; margin-left:auto; margin-right:auto; width:100%%; max-width:400px;" | ||
| 47번째 줄: | 99번째 줄: | ||
|- | |- | ||
| width="33%%" | 전임<br>%s | | width="33%%" | 전임<br>%s | ||
| width="33%%" style="background: var(--altbg);" | | | width="33%%" style="background: var(--altbg);" | %s<br>'''%s''' | ||
| width="33%%" | 후임<br>%s | | width="33%%" | 후임<br>%s | ||
|} | |} | ||
]], prev, | ]], prev, termText, curr, next) | ||
end | end | ||
return p | return p | ||
2026년 1월 2일 (금) 09:57 기준 최신판
이 모듈에 대한 설명문서는 모듈: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