편집 요약 없음 |
편집 요약 없음 |
||
| 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 | ||
----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ||
| 37번째 줄: | 37번째 줄: | ||
end | end | ||
-- 메인 상자 | -- 메인 상자 | ||
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 libre_tab = html.create("div"):addClass("libre-tab") | |||
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) | ||
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: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) | ||
self.japTable = render | |||
end | end | ||
function hanja: | 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) | ||
self.simpTable = render | |||
end | end | ||
function hanja:traditional() | function hanja:traditional() | ||
local render = html.create("table"):css("width", "100%") | |||
local hanja_text = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center") | |||
hanja_text:tag("span"):attr("lang", "ko"):wikitext(self.hanja["한자"]) | |||
if self.hanja["대만식"] ~= "" then | |||
hanja_text:node(renderVariant("대만", self.hanja["대만식"], "zh-tw")) | |||
end | |||
render:tag("tr"):node(hanja_text) | |||
render:node(renderTrThTd("뜻(訓)", self.hanja["뜻"])) | |||
render:node(renderTrThTd("소리(音)", self.hanja["소리"])) | |||
render:node(renderTrThTd("[[부수]]", '[[' .. self.hanja["부수"] .. ']]')) | |||
render:node(renderTrThTd("[[유니코드]]", unicode(self.hanja["한자"]))) | |||
local bool | |||
for k in pairs(self.hanja["이체자"]) do | |||
if self.hanja["이체자"][k] ~= "" then | |||
bool = true | |||
break | |||
end | end | ||
end | |||
if bool == true then | |||
local hanja_variant = html.create("tr"):tag("th"):css("text-align","left"):wikitext("이체자") | |||
local hanja_variants = html.create("span"):addClass('variants') | |||
local i = 1 | |||
while i < 6 do | |||
if self.hanja["이체자"][i] ~= '' then | |||
hanja_variants:node(renderVariant(self.hanja["이체자 이름"][i],self.hanja["이체자"][i], "ko")) | |||
end | end | ||
i = i + 1 | |||
end | end | ||
hanja_variant:tag("td"):node(hanja_variants) | |||
render:node(hanja_variant) | |||
end | |||
local strokeorder = html.create("tr") | |||
strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center"):node(strokeOrder(self.hanja["획수"] .. "획", self.hanja["한자"], "", self.hanja["획순파일"])) | |||
render:node(strokeorder) | |||
self.tradTable = render | |||
end | |||
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 | ||
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('[[' .. | :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 | local currentTitle = title_.getCurrentTitle().prefixedText | ||
if ustring. | if ustring.codepoint(self.hanja["한자"]) > 65535 then | ||
if currentTitle == '시리즈:리브레 한자사전/' .. unicode(self.hanja["한자"]) then | |||
self.hanja_header:wikitext('[[분류:'..unicode(self.hanja["한자"])..']]') | |||
if not args['상위문서x'] then self.hanja_header:wikitext(args['parentLink']) 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 hanja['소리'] == " " then | |||
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. hanja["뜻"] .. '__NOTOC__' ..css) | |||
else]] | |||
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.hanja["뜻"] .. ' <i>〔</i>' .. self.hanja["소리"] .. '<i>〕</i>__NOTOC__' ..css) | |||
--end | --end | ||
self:traditional(); self:japan(); self:simplified() | |||
if args["기본"] == "중국어" or args['기본'] == '간체자' then | if args["기본"] == "중국어" or args['기본'] == '간체자' then | ||
self:render({ 'ko', 'ja', 'zh' }) | |||
elseif args["기본"] == "일본어" or args['기본'] == '신자체' then | elseif args["기본"] == "일본어" or args['기본'] == '신자체' then | ||
self:render({ 'ko', 'ja', 'zh' }) | |||
else | else | ||
self:render({ 'ko', 'ja', 'zh' }) | |||
end | end | ||
end | end | ||
------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ||