경고 : 최신판이 아닙니다. 이 문서의 오래된 판을 편집하고 있습니다. 이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다. 로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!local hanja = {} local html = mw.html local title_ = mw.title local ustring = mw.ustring local getArgs = require('Module:Arguments').getArgs local function unicode(str) return 'U+0'..ustring.upper(string.format("%x", ustring.codepoint(str))) end function hanja.test(frame) return mw.title.getCurrentTitle().prefixedText end function hanja.glyphStyle(frame) local args = getArgs(frame) local hanja = ustring.sub(args['한자'], -1, -1) local lowerCodepoint = string.format("%x", ustring.codepoint(hanja)) local codepoint = string.upper( lowerCodepoint ) local root = html.create('div'):css('display', 'flex'):addClass('hanja-style') local spanCss = 'display: flex;flex-direction: column;align-items: center;' local count = 0 if title_.new('media:'..hanja..'-oracle.svg').exists then count = count + 1 -- 갑골문 root:tag('span'):cssText(spanCss):wikitext('[[파일:'..hanja..'-oracle.svg|80px]]'):tag('div'):wikitext('갑골문') end if title_.new('media:'..hanja..'-bronze.svg').exists then count = count + 1 -- 금문 root:tag('span'):cssText(spanCss):wikitext('[[파일:'..hanja..'-bronze.svg|80px]]'):tag('div'):wikitext('금문') end if title_.new('media:'..hanja..'-bigseal.svg').exists then count = count + 1 -- 대전 root:tag('span'):cssText(spanCss):wikitext('[[파일:'..hanja..'-bigseal.svg|80px]]'):tag('div'):wikitext('대전') end if title_.new('media:'..hanja..'-seal.svg').exists then count = count + 1 -- 소전 root:tag('span'):cssText(spanCss):wikitext('[[파일:'..hanja..'-seal.svg|80px]]'):tag('div'):wikitext('소전') end if title_.new('media:U'..codepoint..'.svg').exists then count = count + 1 local file = '[[파일:U'..codepoint..'.svg|80px]]' root:tag('span'):cssText(spanCss):wikitext(file):tag('div'):wikitext('명조') elseif title_.new('media:Gw u'..lowerCodepoint..'.svg').exists then count = count + 1 local file = '[[파일:Gw u'..lowerCodepoint..'.svg|80px]]' root:tag('span'):cssText(spanCss):wikitext(file):tag('div'):wikitext('명조') elseif title_.new('file:'..hanja..'-명조.svg').exists then count = count + 1 local file = '[[파일:'..hanja..'-명조.svg|80px]]' root:tag('span'):cssText(spanCss):wikitext(file):tag('div'):wikitext('명조') end local i = 1 while args[i] ~= nil and i < 13 do root:tag('span'):cssText(spanCss):wikitext('[[파일:'..args[i]..'|80px]]'):tag('div'):wikitext(args[i + 1]) i = i + 2 count = 1 end if count ~= 0 then return '<h2>한자 유래/서체</h2>'..tostring(root) end end local function strokeOrder(title, hanja, style) local unicode = unicode(hanja) local file, class if title_.new('media:'..hanja..' - '..unicode..' - KanjiVG stroke order.svg').exists then class = 'NavFrame collapsed hanja-strokeorder KanjiVG' file = '[[파일:'..hanja..' - '..unicode..' - KanjiVG stroke order.svg|200px]]' elseif title_.new('media:'..hanja..' - '..unicode..'- KanjiVG stroke order.svg').exists then class = 'NavFrame collapsed hanja-strokeorder KanjiVG' file = '[[파일:'..hanja..' - '..unicode..'- KanjiVG stroke order.svg|200px]]' elseif title_.new('media:'..hanja..'-bw.png').exists then class = 'NavFrame collapsed hanja-strokeorder' file = '[[파일:'..hanja..'-bw.png]]' elseif title_.new('media:'..hanja..'-order.gif').exists then class = 'NavFrame collapsed hanja-strokeorder' file = '[[파일:'..hanja..'-order.gif|100px]]' else return title end local root = html.create( 'div' ):addClass(class):css('border', 'none'):cssText(style) :tag('div'):addClass('NavHead'):wikitext(title):done() root:tag('div'):addClass('NavContent'):wikitext(file) return root end function hanja.strokeOrder(frame) local title = frame.args[1] local hanja = frame.args[2] local style = frame.args[3] return strokeOrder(title, hanja, style) end local function renderVariant(text, hanja, lang) local render = html.create("span"):addClass('variant') render:tag("span"):cssText("font-size: 11px; line-height: 1em;"):wikitext(text) render:tag("span"):attr("lang", lang):wikitext(hanja) return render end local function renderTrThTd(th, td) if td ~= '' then local render = html.create("tr") render:tag("th"):css("text-align", "left"):wikitext(th) render:tag("td"):wikitext(td) return render end end local function renderTrTh(th, class) local render = html.create("tr") render:tag("th"):attr("colspan", "2"):addClass(class):css("text-align", "center"):wikitext(th) return render end -- 메인 상자 local function renderLibreTab(name1, name2, name3, cont1, cont2, cont3) 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(name1) libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(name2) libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(name3) 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(cont1) libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(cont2) libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(cont3) libre_tab:node(libre_tab_main) render:node(libre_tab) return render end local function japan(hanja) local render = html.create("table"):css("width", "100%") local hanja_ = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center") hanja_:tag("span"):attr("lang", "ja"):wikitext(hanja["한자"]) render:tag("tr"):node(hanja_) render:node(renderTrThTd("뜻(訓)", hanja["뜻"])) render:node(renderTrThTd("훈독(訓読)", hanja["훈독"])) if hanja["오음"] == '' and hanja["한음"] == '' and hanja["당음"] == '' and hanja["관용음"] == '' then render:node(renderTrThTd("음독(音読)", hanja["음독"])) else render:node(renderTrTh("음독(音読)", hanja["음독"])) render:node(renderTrThTd("오음(吳音)", hanja["오음"])) render:node(renderTrThTd("한음(漢音)", hanja["한음"])) render:node(renderTrThTd("당음(唐音)", hanja["당음"])) render:node(renderTrThTd("관용음", hanja["관용음"])) end render:node(renderTrThTd("[[부수]]", '[['..hanja["부수"]..']]')) render:node(renderTrThTd("[[유니코드]]", unicode(hanja["한자"]))) local strokeorder = html.create("tr") strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center") :node(strokeOrder( hanja["획수"] .. "획", hanja["한자"], "" )) render:node(strokeorder) return render end local function simplicial(hanja) local render = html.create("table"):css("width", "100%") local hanja_ = html.create("td") :attr("colspan", "2") :addClass("hanja") :css("text-align", "center") hanja_:tag("span") :attr("lang", "zh-cn") :wikitext(hanja["한자"]) render:tag("tr"):node(hanja_) render:node(renderTrThTd("뜻(訓)", hanja["뜻"])) render:node(renderTrThTd("중국어 병음", hanja["병음"])) if hanja["중고한어"] ~= "" then render:node(renderTrThTd("중고한어", hanja["중고한어"])) end render:node(renderTrThTd("[[부수]]", '[['..hanja["부수"]..']]')) render:node(renderTrThTd("[[유니코드]]", unicode(hanja["한자"]))) local strokeorder = html.create("tr") strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center") :node(strokeOrder( hanja["획수"] .. "획", hanja["한자"], "" )) render:node(strokeorder) return render end local function traditional(hanja) local render = html.create("table"):css("width", "100%") local hanja_ = html.create("td"):attr("colspan", "2"):addClass("hanja"):css("text-align", "center") hanja_:tag("span"):attr("lang", "ko"):wikitext(hanja["한자"]) if hanja["대만식"] ~= "" then hanja_:node(renderVariant("대만", hanja["대만식"], "zh-tw")) end render:tag("tr"):node(hanja_) render:node(renderTrThTd("뜻(訓)", hanja["뜻"])) render:node(renderTrThTd("소리(音)", hanja["소리"])) render:node(renderTrThTd("[[부수]]", '[['..hanja["부수"]..']]')) render:node(renderTrThTd("[[유니코드]]", unicode(hanja["한자"]))) local bool for k in pairs(hanja["이체자"]) do if hanja["이체자"][k] ~= "" then bool = 1 break end end if bool == 1 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 hanja["이체자"][i] ~= '' then hanja_variants:node(renderVariant(hanja["이체자 이름"][i], hanja["이체자"][i], "ko")) end i = i + 1 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( hanja["획수"] .. "획", hanja["한자"], "" )) render:node(strokeorder) return render end function hanja.info(frame) local args = getArgs(frame) local fullpagename = title_.getCurrentTitle().prefixedText local hanja = { ["한자"] = args["한자"] or " ", ["뜻"] = args["뜻"] or " ", ["소리"] = args["소리"] or " ", ["부수"] = args["부수"] or " ", ["획수"] = args["획수"] or " ", ["대만식"] = args["정체자"] or args["대만식"] or "", ["이체자"] = { args["약자"] or "", args["속자"] or "", args["이체자"] or args["이체자1"] or "", args["이체자2"] or "", args["이체자3"] or "", args["이체자4"] or "", args["이체자5"] or "" }, ["이체자 이름"] = { "약자", "속자", " ", " ", " ", " ", " " }, jap = { ["한자"] = args["신자체"] or args["한자"] or " ", ["뜻"] = args["뜻"] or " ", ["훈독"] = args["훈독"] or "", ["음독"] = args["음독"] or "", ["오음"] = args["오음"] or "", ["한음"] = args["한음"] or "", ["당음"] = args["당음"] or "", ["관용음"] = args["관용음"] or "", ["획수"] = args["신자체 획수"] or args["획수"] or " ", ["부수"] = args["신자체 부수"] or args["부수"] or " " }, simp = { ["한자"] = args["간체자"] or args["한자"] or " ", ["뜻"] = args["뜻"] or " ", ["병음"] = args["병음"] or " ", ["중고한어"] = args["중고한어"] or "", ["획수"] = args["간체자 획수"] or args["획수"] or " ", ["부수"] = args["간체자 부수"] or args["부수"] or " " } } local css local root if fullpagename == '시리즈:리브레 한자사전/음으로 찾기' then local EducatinalHanja = require('Module:한자/data').isEducatinalHanja root = html.create('li'):addClass("hanja-info-head") :css('display', 'block') root:tag('span') :addClass("hanja"..' '..EducatinalHanja(hanja["한자"])) :wikitext('【[[시리즈:리브레 한자사전/'..hanja["한자"]..'|'..hanja["한자"]..']]】') root:tag('span') :addClass('mean') :wikitext(hanja["뜻"]..'〔'..hanja["소리"]..'〕') return root else root = html.create('div'):addClass("hanja-info-head") css = args['css'] end if args['모드'] == '한자' then root:tag('span') :addClass('hanja') :wikitext('[['..hanja["한자"]..']]'..css) return root elseif args['모드'] == '신자체' or args[1] == '일본어' then root:tag('span') :addClass('hanja') :attr('lang', 'ja') :css('font-family', 'Noto Serif CJK KR, serif') :wikitext('[['..hanja.jap["한자"]..']]'..css) return root elseif args['모드'] == '훈음'then root:tag('span') :addClass('hanja') :wikitext('[['..hanja["한자"]..']]') root:tag('span') :addClass('mean') :wikitext(' '..hanja["뜻"]..'〔'..hanja["소리"]..'〕'..css) return root elseif args['모드'] == '풀이' then return '' else if ustring.find( fullpagename, '시리즈:리브레 한자사전') then if args['상위문서x'] == nil then root:wikitext(args['parent']) end if args['미분류'] == nil then root:wikitext('[[분류:한자/문자|'..hanja["소리"]..']]') else root:wikitext('[[분류:한자/문자|*]]') end end root:tag('span') :addClass('hanja') :wikitext('[['..hanja["한자"]..']]') root:tag('span') :addClass('mean') :wikitext(' '..hanja["뜻"]..'〔'..hanja["소리"]..'〕__NOTOC__'..css) end if args["기본"] == "중국어" or args['기본'] == '간체자' then return tostring(root)..tostring(renderLibreTab( "간체자[中]", "정자[韓/臺]", "신자체[日]", simplicial(hanja.simp), traditional(hanja), japan(hanja.jap))) elseif args["기본"] == "일본어" or args['기본'] == '신자체' then return tostring(root)..tostring(renderLibreTab( "신자체[日]", "정자[韓/臺]", "간체자[中]", japan(hanja.jap), traditional(hanja), simplicial(hanja.simp))) else return tostring(root)..tostring(renderLibreTab( "정자[韓/臺]", "신자체[日]", "간체자[中]", traditional(hanja), japan(hanja.jap), simplicial(hanja.simp))) end end function hanja.flexlist(frame) local args = getArgs(frame) local i = 1 local list = html.create('div'):addClass('hanja-list-flex') while args[i] do --local hanja = ustring.match(args[i], '%S+') --local name = ustring.match(args[i], '%s.+') local _ = html.create('div') _:tag('div'):wikitext(args[i]) _:tag('div'):wikitext(args[i + 1]) list:node(_) i = i + 2 end return list end return hanja 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:하위문서 목록 (편집) 틀:하위문서 목록/styles.css (편집) 모듈:한자/설명문서 (편집)