모듈:reference section/table
이 모듈에 대한 설명문서는 모듈:reference section/table/설명문서에서 만들 수 있습니다
local export = {}
local script_utilities_module = "모듈:script utilities"
local css_classes = {
qualifier = 'e-qualifier',
title = 'r-title',
subtitle = 'r-subtitle'
}
-- HTML 시맨틱 태그 생성기. mw.htmlcreate()과 유사하게 기능
local function wrap(tag, class, style, text)
if text and style and class then
return table.concat{'<', tag, ' class="', class, '" style="', style, '">', text, '</', tag, '>'}
else
if text and class then
return table.concat{'<', tag, ' class="', class, '">', text, '</', tag, '>'}
else
return nil
end
end
end
-- span, table 시맨틱 태그를 생성함
local function span(class, text) return wrap('span', class, nil, text) end
local function tab(class, style, text)
if style then
return wrap('table', class, style, text)
else
return wrap('table', class, false, text)
end
end
local function th(style, text) return wrap('th', "", style, text) end
-- 영위낱 고유링크 80187774#L-86 부분
local function convert_to_raw_text(text)
text = rsub(text, "<.->", "")
if text:find("%[%[") then
text = require(links_module).remove_links(text)
end
return text
end
local function process_ref_section_text(data)
local langcode = data.langcode
local scriptcode = data.scriptcode
local title = data.title
local subtitle = data.subtitle
local journal = data.journal
local identifier = data.identifier
local publisher = data.publisher
local year = data.year
local month = data.month
local day = data.day
local vol = data.vol
local issue = data.issue
local sing = data.sing
local edition = data.edition
local author = data.author
local proofreader = data.proofreader
local cowork = data.cowork
local ref_type = data.ref_type
local page = data,page
if subtitle then
subtitle = ":" .. subtitle -- ':부제'와 같은 형식으로 포맷팅
else
subtitle = "" -- 빈 스트링
end
if journal then
subtitle = "〈"..span(css_classes.subtitle, title .. subtitle ).."〉"
title = "《"..span(css_classes.title, journal ).."》"
else
title = "《"..span(css_classes.title, title ).."》"
end
if publisher then
publisher = "("..span(css_classes.subtitle, publisher )..")"
end
return {
author,
identifier,
title,
subtitle,
publisher,
}
end
--[==[
포맷팅.
* lang: 텍스트에 대한 언어 오브제.
* title: 포맷팅할 텍스트.
* subtitle: title과 합칠 텍스트. 참일 경우 사이에 클론이 낌
* journal: 참일 경우 텍스트를 합치지 않고 큰꺽쇠와 작은 꺽쇠로 구분함
* identifier: 참고문헌을 불러오는 식별자. 필수.
]==]
function export.format_ref_section(data)
local author = data.author
local proofreader = data.proofreader
local langcode = data.langcode
local scriptcode = data.scriptcode
local title = data.title
local subtitle = data.subtitle
local journal = data.journal
local identifier = data.id
local publisher = data.publisher
local desc = data.desc
-- 문자체제 코드가 입력되지 않아도 제목을 바탕으로 최적의 문자열을 찾아내는 도구
local script = require("모듈:languages").getByCode(scriptcode or "und", langparam, "allow etym")
if not scriptcode then
scriptcode = script:findBestScript(title)
end
-- templatestyles는 만들지 않았음
local shortcutbox_css = {
"border:1px solid #aaa;" ,
"background:#fff;",
"margin: .3em .3em .3em 1em;",
"padding:3px; float:right;",
"text-align:center"
}
local th_css = "border: none; background: transparent;"
if identifier then
local style = table.concat(shortcutbox_css, " ")
identifier = tab("shortcutbox noprint", style, th( th_css, "식별자" .. "<br>" .. identifier ) )
end
local ref_type = desc and "사전" or "논문"
local obj = process_ref_section_text {
title = data.title,
subtitle = data.subtitle,
journal = data.journal,
identifier = identifier,
year = data.year,
month = data.month,
day = data.day,
isbn = data.isbn,
issn = data.issn,
vol = data.vol,
issue = data.issue,
sing = data.sing,
edition = data.edition,
author = data.author,
proofreader = data.proofreader,
cowork = data.cowork,
publisher = data.publisher,
page = data,page,
ref_type = ref_type
}
res = table.concat(obj)
return res
end
return export