편집 요약 없음
편집 요약 없음
6번째 줄: 6번째 줄:
local strokeOrder = require('Module:한자/획순').strokeOrder_
local strokeOrder = require('Module:한자/획순').strokeOrder_


function hanja.test(frame) return 'asdf' end


local function unicode(str)
local function unicode(str)
11번째 줄: 12번째 줄:
end
end


function hanja.test(frame) return 'asdf' end
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------


37번째 줄: 37번째 줄:
end
end
-- 메인 상자
-- 메인 상자
local function renderLibreTab(titleTable, contTable)
function hanja:render(titleTable)
local render = html.create("div"):addClass("libre hanja-info"):cssText('box-shadow: 0 0.5em 1em -0.125em rgb(10 10 10 / 10%), 0 0 0 1px rgb(10 10 10 / 2%); border-radius: .25rem;')
    local render = html.create("div"):addClass("libre hanja-info"):cssText('box-shadow: 0 0.5em 1em -0.125em rgb(10 10 10 / 10%), 0 0 0 1px rgb(10 10 10 / 2%); border-radius: .25rem;')
local libre_tab = html.create("div"):addClass("libre-tab")
    local libre_tab = html.create("div"):addClass("libre-tab")
local libre_tab_btns = html.create("div"):addClass("libre-tab-btns")
    local libre_tab_btns = html.create("div"):addClass("libre-tab-btns")
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):addClass("libre-tab-btn-active"):wikitext(titleTable[1])
    local libre_tab_main = html.create("div"):addClass("libre-tab-main")
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(titleTable[2])
 
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(titleTable[3])
    local tabtitles = {
        ['ko'] = {'한국어[韓/臺]', self.tradTable},
        ['zh'] = {'중국어[中]', self.simpTable},
        ['ja'] = {'일본어[日]', self.japTable}
    }
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):addClass("libre-tab-btn-active"):wikitext(tabtitles[titleTable[1]][1])
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(tabtitles[titleTable[2]]['1'])
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(tabtitles[titleTable[3]]['1'])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):addClass("libre-tab-main-content-active"):node(tabtitles[titleTable[1]]['2'])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(tabtitles[titleTable[2]]['2'])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(tabtitles[titleTable[3]]['2'])
libre_tab:node(libre_tab_btns)
libre_tab:node(libre_tab_btns)
local libre_tab_main = html.create("div"):addClass("libre-tab-main")
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):addClass("libre-tab-main-content-active"):node(contTable[1])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(contTable[2])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(contTable[3])
libre_tab:node(libre_tab_main)
libre_tab:node(libre_tab_main)
render:node(libre_tab)
render:node(libre_tab)


return render
return tostring(self.hanja_header)..tostring(render)
end
end


function hanja.info(frame)
function hanja:japan()
function hanja:japan()
local render = html.create("table"):css("width", "100%")
local render = html.create("table"):css("width", "100%")


83번째 줄: 88번째 줄:


render:node(strokeorder)
render:node(strokeorder)
return render
self.japTable = render
end
end


function hanja:simplicial()
function hanja:simplified()
local render = html.create("table"):css("width", "100%")
local render = html.create("table"):css("width", "100%")


106번째 줄: 111번째 줄:


render:node(strokeorder)
render:node(strokeorder)
return render
self.simpTable = render
end
end


function hanja:traditional()
function hanja:traditional()
local render = html.create("table"):css("width", "100%")
local render = html.create("table"):css("width", "100%")
    local hanja_ = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center")
local hanja_text = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center")
hanja_:tag("span"):attr("lang", "ko"):wikitext(self.hanja["한자"])
hanja_text:tag("span"):attr("lang", "ko"):wikitext(self.hanja["한자"])


if self.hanja["대만식"] ~= "" then
if self.hanja["대만식"] ~= "" then
hanja_:node(renderVariant("대만", self.hanja["대만식"], "zh-tw"))
hanja_text:node(renderVariant("대만", self.hanja["대만식"], "zh-tw"))
end
end
render:tag("tr"):node(hanja_)
render:tag("tr"):node(hanja_text)


render:node(renderTrThTd("뜻(訓)", self.hanja["뜻"]))
render:node(renderTrThTd("뜻(訓)", self.hanja["뜻"]))
render:node(renderTrThTd("소리(音)", self.hanja["소리"]))
render:node(renderTrThTd("소리(音)", self.hanja["소리"]))
render:node(renderTrThTd("[[부수]]", '[[' .. self.hanja["부수"] .. ']]'))
render:node(renderTrThTd("[[부수]]", '[[' .. self.hanja["부수"] .. ']]'))
render:node(renderTrThTd("[[유니코드]]", unicode(self.hanja["한자"])))
render:node(renderTrThTd("[[유니코드]]", unicode(self.hanja["한자"])))


local bool
local bool
for k in pairs(self.hanja["이체자"]) do
for k in pairs(self.hanja["이체자"]) do
if self.hanja["이체자"][k] ~= "" then
if self.hanja["이체자"][k] ~= "" then
bool = true
bool = true
break
break
end
end
end
end


if bool == true then
if bool == true then
local hanja_variant = html.create("tr"):tag("th"):css("text-align","left"):wikitext("이체자")
local hanja_variant = html.create("tr"):tag("th"):css("text-align","left"):wikitext("이체자")
local hanja_variants = html.create("span"):addClass('variants')
local hanja_variants = html.create("span"):addClass('variants')


local i = 1
local i = 1
while  i < 6 do
while  i < 6 do
if self.hanja["이체자"][i] ~= '' then
if self.hanja["이체자"][i] ~= '' then
hanja_variants:node(renderVariant(self.hanja["이체자 이름"][i],self.hanja["이체자"][i], "ko"))
hanja_variants:node(renderVariant(self.hanja["이체자 이름"][i],self.hanja["이체자"][i], "ko"))
end
i = i + 1
end
end
hanja_variant:tag("td"):node(hanja_variants)
i = i + 1
render:node(hanja_variant)
end
end
hanja_variant:tag("td"):node(hanja_variants)
render:node(hanja_variant)
end


local strokeorder = html.create("tr")
local strokeorder = html.create("tr")
strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center"):node(strokeOrder(self.hanja["획수"] .. "획", self.hanja["한자"], "",self.hanja["획순파일"]))
strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center"):node(strokeOrder(self.hanja["획수"] .. "획", self.hanja["한자"], "", self.hanja["획순파일"]))
render:node(strokeorder)
render:node(strokeorder)


return render
self.tradTable = render
end
end


local self = hanja
function hanja.info(frame) return hanja:info_(frame) end
function hanja:info_(frame)
local args = getArgs(frame)
local args = getArgs(frame)
local css
local css
local hanja_header


if args['모드'] == '목록' then
if args['모드'] == '목록' then
local hanja = args["한자"]
local hanja = args["한자"]
hanja_header = html.create('span')
self.hanja_header = html.create('span')
hanja_header:tag('span'):addClass("hanja")
self.hanja_header:tag('span'):addClass("hanja")
:wikitext('【[[시리즈:리브레 한자사전/' .. hanja ..'|' .. hanja .. ']]】')
:wikitext('【[[시리즈:리브레 한자사전/' .. hanja ..'|' .. hanja .. ']]】')
if args['소리'] == " " then
if args['소리'] == " " then
hanja_header:tag('span'):addClass('mean')
self.hanja_header:tag('span'):addClass('mean')
:wikitext(args["뜻"])
:wikitext(args["뜻"])
else
else
hanja_header:tag('span'):addClass('mean')
self.hanja_header:tag('span'):addClass('mean')
:wikitext(args["뜻"] .. '〔' .. args["소리"] .. '〕')
:wikitext(args["뜻"] .. '〔' .. args["소리"] .. '〕')
end
end


return hanja_header
return self.hanja_header
else
else
hanja_header = html.create('div'):addClass("hanja-info-head")
self.hanja_header = html.create('div'):addClass("hanja-info-head")
css = args['css']
css = args['css']
end
end
223번째 줄: 228번째 줄:


if args['모드'] == '한자' then
if args['모드'] == '한자' then
hanja_header:tag('span'):addClass('hanja')
self.hanja_header:tag('span'):addClass('hanja')
:wikitext('[[' ..hanja.hanja["한자"] ..']]' .. css)
:wikitext('[[' ..self.hanja["한자"] ..']]' .. css)
return hanja_header
return self.hanja_header


elseif args['모드'] == '신자체' or args[1] == '일본어' then
elseif args['모드'] == '신자체' or args[1] == '일본어' then
hanja_header:tag('span'):addClass('hanja'):attr('lang', 'ja'):css('font-family', 'Noto Serif CJK KR, serif')
self.hanja_header:tag('span'):addClass('hanja'):attr('lang', 'ja'):css('font-family', 'Noto Serif CJK KR, serif')
:wikitext('[[' ..self.jap["한자"] ..']]' .. css)
:wikitext('[[' ..self.jap["한자"] ..']]' .. css)
return hanja_header
return self.hanja_header


elseif args['모드'] == '훈음' then
elseif args['모드'] == '훈음' then
hanja_header:tag('span'):addClass('hanja')
self.hanja_header:tag('span'):addClass('hanja')
:wikitext('[[' ..self.hanja["한자"] ..']]')
:wikitext('[[' ..self.hanja["한자"] ..']]')
if args['소리'] == " " then
if args['소리'] == " " then
hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] ..css)
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] ..css)
else
else
hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] .. ' <i>〔</i>' .. self.hanja["소리"] .. '<i>〕</i>' )
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] .. ' <i>〔</i>' .. self.hanja["소리"] .. '<i>〕</i>' ..css)
end
end
return hanja_header
return self.hanja_header


elseif args['모드'] == '풀이' then
elseif args['모드'] == '풀이' then
return ''
return ''
end
end
 
local fullpagename = title_.getCurrentTitle().prefixedText
local currentTitle = title_.getCurrentTitle().prefixedText
if ustring.find(fullpagename, '시리즈:리브레 한자사전') then
if ustring.codepoint(self.hanja["한자"]) > 65535 then
hanja_header:wikitext('[[분류:'..self.hanja["한자"]..']]')
        if currentTitle == '시리즈:리브레 한자사전/' .. unicode(self.hanja["한자"]) then
if args['상위문서x'] == nil then
            self.hanja_header:wikitext('[[분류:'..unicode(self.hanja["한자"])..']]')
hanja_header:wikitext(args['parent'])
            if not args['상위문서x'] then self.hanja_header:wikitext(args['parentLink']) end
end
        end
self.hanja_header:tag('span'):addClass('hanja'):wikitext('[[' .. unicode(self.hanja["한자"]) ..'|'.. self.hanja["한자"] ..']]')
else
        if currentTitle == '시리즈:리브레 한자사전/' .. self.hanja["한자"] then
            self.hanja_header:wikitext('[[분류:'..self.hanja["한자"]..']]')
            if not args['상위문서x'] then self.hanja_header:wikitext(args['parentLink']) end
        end
self.hanja_header:tag('span'):addClass('hanja'):wikitext('[[' ..self.hanja["한자"] ..']]')
end
end
if mw.ustring.codepoint(hanja.hanja["한자"]) > 65535 then
    --[[
hanja_header:tag('span'):addClass('hanja'):wikitext('[[' .. unicode(self.hanja["한자"]) ..'|'.. self.hanja["한자"] ..']]')
        if hanja['소리'] == " " then
else
            self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. hanja["뜻"] .. '__NOTOC__' ..css)
hanja_header:tag('span'):addClass('hanja'):wikitext('[[' ..self.hanja["한자"] ..']]')
        else]]
end--[[
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] .. ' <i>〔</i>' .. self.hanja["소리"] .. '<i>〕</i>__NOTOC__' ..css)
if hanja['소리'] == " " thenself
hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. hanja["뜻"] .. '__NOTOC__' ..css)
else]]
hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] .. ' <i>〔</i>' .. self.hanja["소리"] .. '<i>〕</i>__NOTOC__'..css)
--end
--end
local torender
self:traditional(); self:japan(); self:simplified()
if args["기본"] == "중국어" or args['기본'] == '간체자' then
if args["기본"] == "중국어" or args['기본'] == '간체자' then
return tostring(hanja_header) .. tostring(renderLibreTab(
        self:render({ 'ko', 'ja', 'zh' })
{ "중국어[中]", "한국어[韓/臺]", "일본어[日]"},
{ self:simplicial(), self:traditional(), self:japan()}
))
elseif args["기본"] == "일본어" or args['기본'] == '신자체' then
elseif args["기본"] == "일본어" or args['기본'] == '신자체' then
return tostring(hanja_header) .. tostring(renderLibreTab(
        self:render({ 'ko', 'ja', 'zh' })
{"일본어[日]", "한국어[韓/臺]", "중국어[中]"},
{ self:japan(), self:traditional(), self:simplicial()}
))
else
else
return tostring(hanja_header) .. tostring(renderLibreTab(
self:render({ 'ko', 'ja', 'zh' })
{"한국어[韓/臺]", "일본어[日]", "중국어[中]"},
{ self:traditional(), self:japan(), self:simplicial()}
))
end
end
   
end
end
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------