본문으로 이동

모듈: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, "&nbsp;")
	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