모듈:Hide
모듈 설명문서[만들기]
이 모듈에 대한 설명문서를 생성할 수 있습니다. 연습장 (생성 | 복제) 및 시험장 (생성) 문서에서 이 모듈을 실험할 수 있습니다. 분류는 /설명문서 하위 문서에 넣어주세요. 이 모듈에 딸린 문서. |
local export = {}
-- 틀에서 각종 매개변수들을 모듈 안으로 불러 오는 역할을 수행.
local m_parameter = require("모듈:parameters")
-- 문자열 대체 라이브러리.
local gsub = mw.ustring.gsub
-- 트래킹 툴. 주로 "제목=낱말 풀이"의 형식으로 사용된 파라미터를 추적하여 사용률 현황을 집계할 목적으로 사용.
local function track(page)
require("모듈:debug").track("글 숨기기 (틀)/" .. page)
return true
end
function export.hide_format(data)
-- 병렬 불러오기.
local head, width, color, style, content = data.head, data.width, data.color, data.style, data.content
local first_line, second_line, third_line
-- result의 줄임말.
local res
-- 기본값 설정
if not width then width = '100%' end
if not color then color = '#E8E8E8' end
if not head then head = "이 내용을 보려면 오른쪽 '펼치기' 버튼을 클릭" end
if not style then style = "" end
if not content then content = "" end
-- 포맷팅.
first_line = '{| class="noprint toctitle mw-collapsible mw-collapsed mw" width="' .. width .. '"\n'
second_line = '! align="left" style="background-color:' .. color .. '; margin: 0 auto; padding: 0 10px 0 10px; font-size:small;' .. style .. '"|' .. head .. '\n'
third_line = '|- \n|style="border-bottom: 1px solid silver;"|\n' .. content .. '\n|}'
res = first_line .. second_line .. third_line
-- 형식을 내보냄
return res
end
function export.hide_format_end()
track("글 숨김 끝 틀을 사용한 문서")
end
-- 위키낱말사전으로 자동 연결되도록 링크해 주는 로직.
function export.hide_make_link(text)
-- 낱말과 괄호 안의 뜻을 추출
local text = text:gsub("%* ([^%(]+)%(([^%)]+)%)", function(word, meanings)
-- 뜻을 ','로 구분하여 배열로 변환
local meanings_list = mw.text.split(meanings, ",%s*") -- %s*는 공백 허용
-- 각 뜻에 대해 링크 생성
for i, meaning in ipairs(meanings_list) do
meanings_list[i] = string.format("[[wikt:%s|%s]]", meaning, meaning)
end
-- 낱말과 함께 변환된 링크들을 결합
return string.format("* [[wikt:%s|%s]](%s)", word, word, table.concat(meanings_list, ", "))
end)
return text
end
-- {{글 숨김|제목=낱말풀이}}과 같은 틀을 파싱하는 함수.
function export.hide_template(frame)
-- 기존 파서함수를 이용한 틀에서 사용되는 각종 변수들.
-- 루아로 이식되더라도 기존 틀이 정상적으로 작동되어야 하기 때문에 그대로 사용.
local params = {
-- 기존 [[틀:글 숨김]] 파서함수 매개변수들.
-- 영어로 된 건 내부 변수로, 실질적인 성격에서도 사용 가능한 매개변수.
[1] = {},
["head"] = {},
["제목"] = { alias_of = "head" },
["width"] = {},
["너비"] = { alias_of = "width" },
["color"] = {},
["제목색"] = { alias_of = "color" },
["style"] = {},
["제목모양"] = { alias_of = "style" },
-- 추가한 매개변수는 아래에 작성.
["content"] = {},
["내용"] = { alias_of = "content" }
}
-- 매개변수를 불러오는 부분
local args = m_parameter.process(frame:getParent().args, params)
local content = ""
content = args.content
-- 글숨김이 낱말풀이 용도로 사용되었는지를 검사하는 로직.
if args.head and #args.head > 0 then
track("제목 매개변수를 사용하는 글 숨김 틀")
if args.head == "낱말풀이" then
track("제목이 낱말풀이인 글 숨김 틀 사용 현황")
head = "낱말풀이"
content = export.hide_make_link(args.content)
else
head = args.head
end
end
-- 다른 함수에 전달하는 데이터.
local data = {
head = head,
width = args.width,
color = args.color,
style = args.style,
content = content
}
-- 함수 호출.
return export.hide_format(data)
end
return export