모듈:reference
이 모듈에 대한 설명문서는 모듈:reference/설명문서에서 만들 수 있습니다
local export = {}
local tostring = tostring
local table_module = "모듈:reference section/table"
local nbsp = " "
local br = "</br>"
local function wrap(tag, item, style)
if style then
return "<"..tag.." "..'style="'..style..'">'..item.."</"..tag..">"
else
return "<"..tag..'>'..item.."</"..tag..">"
end
end
local function span(item, style)
return wrap("span", item, style)
end
local function reference_style_dic(data)
local thesis = data.thesis
local suppress_thesis = data.suppress_thesis
local title = data.title
local year = data.year
local page = data.page
local author = data.author
local proofreader = data.proofreader
local proof_type = data.proof_type
local publisher = data.publisher
if thesis then
thesis = span("‘’"..thesis.."‘’", "font-size:19px;")
elseif suppress_thesis == true then
thesis = ""
else
thesis = mw.title.getCurrentTitle().text
thesis = span("‘’"..thesis.."‘’", "font-size:19px;")
end
title = span("《"..title.."》", "font-size:17px;")
if year then
year = span("("..year..")")
end
if page ~= nil then
page = span(" ― " .. page.." p.")
else
page = ""
end
if author ~= nil then
author = span("편저: ", "font-size:12px;") .. span(author)
elseif suppress_author ~= nil then
author = ""
else
author = span("(저자 누락)", 'font-size:12px;')
end
if proofreader ~= nil then
if proof_type == "편집주간" then
proofreader = span(" 편집주간: ", "font-size:12px;").. span(proofreader)
elseif proof_type == "감수" or proof_type ~= "" then
proofreader = span(" 감수: ", "font-size:12px;") .. span(proofreader)
end
else
proofreader = ""
end
if publisher ~= nil then
publisher = span(" 출판사: ", "font-size:12px;").. span(publisher)
else
publisher = ""
end
elements = {
thesis,
title,
year .. page .. br,
author,
proofreader,
publisher
}
result = table.concat(elements, " ")
return result
end
function export.main(frame)
local params = {
-- 해당 문헌의 출발어 정보 ex) 중국어를 다루는 영어 논문 -> 중국어
-- 트래킹 방법은 모르나, 추후에 한국어 문헌 목록에 중한사전을 써넣는 경우를 체크하기 위한 매개변수
["langcode"] = {},
-- 도착 문헌이 사용하는 언어의 문자 체계에 대한 4글자짜리 정보. 참고 문헌 문단의 표시 담당
-- ex) 중국어를 다루는 영어 논문 -> 영어 -> 라틴 문자
-- 내부 변수로 설계해야 하는 건지는 잘 모르겠음
["scriptcode"] = {},
["thesis"] = {},
["표제어"] = { alias_of = "thesis" },
["suppress_thesis"] = { type = "boolean" },
["표제어숨기기"] = { alias_of = "suppress_thesis" },
["page"] = {},
["페이지"] = { alias_of = "page" },
-- 사전이나 책, 논문의 정보
["title"] = { requried = true },
["제목"] = { alias_of = "title" }, --
["subtitle"] = {},
["부제"] = { alias_of = "subtitle" }, --
["journal"] = {},
["논문명"] = { alias_of = "journal" }, --
["학술지여부"] = { type = "boolean" },
-- 식별자
["id"] = {},
["식별자"] = { alias_of = "id" },
["identifier"] = { alias_of = "id" },
-- 날짜 정보
["year"] = {},
["연도"] = { alias_of = "year" },
["초판 연도"] = {},
["날짜월"] = {},
["날짜일"] = {},
["초판월"] = {},
["초판일"] = {},
-- 책 고유번호
["ISBN"] = {},
["ISSN"] = {},
-- 논문의 경우 권과 호가 중요할 수 있음
["vol"] = {},
["volume"] = { alias_of = "vol" }, -- ["별명"] = { alias_of = "진짜 사용할 변수" }
["권"] = { alias_of = "vol" },
["issue"] = {},
["호"] = { alias_of = "issue" },
["singvol"] = { type = "boolean" },
["단권"] = { alias_of = "singvol" }, -- 단권일 경우. 사전도 분권되어 있는 경우가 있음
-- 판 정보. 쇄는 적지 않는 게 나을 것 같아서 제외함
["edition"] = {},
["판"] = { alias_of = "edition" },
-- 저자 정보
["author"] = {},
["저자"] = { alias_of = "author" },
["편저"] = { alias_of = "author" },
["편찬"] = { alias_of = "author" },
["suppress_author"] = { type = "boolean" },
["저자숨기기"] = { alias_of = "suppress_author" },
["저자명숨기기"] = { alias_of = "suppress_author" },
["편찬자편집국여부"] = { alias_of = "suppress_author" }, -- 편찬자가 출판사와 같은 경우 표시하지 않는 옵션
["proofreader"] = {},
["감수자"] = { alias_of = "proofreader" },
["감수"] = { alias_of = "proofreader" },
["편집주간"] = { alias_of = "proofreader" },
["proof_type"] = {},
["suppress_proo"] = { type = "boolean" },
["감수자편집국여부"] = { alias_of = "suppress_proo" },
-- 출판사 정보
["publisher"] = {},
["출판"] = { alias_of = "publisher" },
["출판사"] = { alias_of = "publisher" },
-- 논문일 경우 해당 논문이 포함된 페이지 범위. 표제어가 등록된 페이지 수를 적는 게 아님.
["start_page"] = {},
["end_page"] = {},
["시작페이지"] = { alias_of = "start_page" },
["끝페이지"] = { alias_of = "end_page"}
}
local args = require("모듈:parameters").process(frame:getParent().args, params)
local obj = reference_style_dic {
thesis = args.thesis,
suppress_thesis = args.suppress_thesis,
title = args.title,
year = args.year,
page = args.page,
author = args.author,
proofreader = args.proofreader,
proof_type = args.proof_type,
publisher = args.publisher
}
return obj
end
return export