모듈:UnicodeBlock: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
 
(같은 사용자의 중간 판 43개는 보이지 않습니다)
1번째 줄: 1번째 줄:
local hanjaInfo = {}
local uniBlock = {
local html = mw.html
{'0000','007F','Basic Latin'},
local title_ = mw.title
{'0080','00FF','Latin-1 Supplement'},
local ustring = mw.ustring
{'0100','017F','Latin Extended-A'},
local getArgs = require('Module:Arguments').getArgs
{'0180','024F','Latin Extended-B'},
local strokeOrder = require('Module:한자/획순').strokeOrder_
{'0250','02AF','IPA Extensions'},
{'02B0','02FF','Spacing Modifier Letters'},
{'0300','036F','Combining Diacritical Marks'},
{'0370','03FF','Greek and Coptic'},
{'0400','04FF','Cyrillic'},
{'0500','052F','Cyrillic Supplement'},
{'0530','058F','Armenian'},
{'0590','05FF','Hebrew'},
{'0600','06FF','Arabic'},
{'0700','074F','Syriac'},
{'0750','077F','Arabic Supplement'},
{'0780','07BF','Thaana'},
{'07C0','07FF','NKo'},
{'0800','083F','Samaritan'},
{'0840','085F','Mandaic'},
{'08A0','08FF','Arabic Extended-A'},
{'0900','097F','Devanagari'},
{'0980','09FF','Bengali'},
{'0A00','0A7F','Gurmukhi'},
{'0A80','0AFF','Gujarati'},
{'0B00','0B7F','Oriya'},
{'0B80','0BFF','Tamil'},
{'0C00','0C7F','Telugu'},
{'0C80','0CFF','Kannada'},
{'0D00','0D7F','Malayalam'},
{'0D80','0DFF','Sinhala'},
{'0E00','0E7F','Thai'},
{'0E80','0EFF','Lao'},
{'0F00','0FFF','Tibetan'},
{'1000','109F','Myanmar'},
{'10A0','10FF','Georgian'},
{'1100','11FF','Hangul Jamo'},
{'1200','137F','Ethiopic'},
{'1380','139F','Ethiopic Supplement'},
{'13A0','13FF','Cherokee'},
{'1400','167F','Unified Canadian Aboriginal Syllabics'},
{'1680','169F','Ogham'},
{'16A0','16FF','Runic'},
{'1700','171F','Tagalog'},
{'1720','173F','Hanunoo'},
{'1740','175F','Buhid'},
{'1760','177F','Tagbanwa'},
{'1780','17FF','Khmer'},
{'1800','18AF','Mongolian'},
{'18B0','18FF','Unified Canadian Aboriginal Syllabics Extended'},
{'1900','194F','Limbu'},
{'1950','197F','Tai Le'},
{'1980','19DF','New Tai Lue'},
{'19E0','19FF','Khmer Symbols'},
{'1A00','1A1F','Buginese'},
{'1A20','1AAF','Tai Tham'},
{'1AB0','1AFF','Combining Diacritical Marks Extended'},
{'1B00','1B7F','Balinese'},
{'1B80','1BBF','Sundanese'},
{'1BC0','1BFF','Batak'},
{'1C00','1C4F','Lepcha'},
{'1C50','1C7F','Ol Chiki'},
{'1CC0','1CCF','Sundanese Supplement'},
{'1CD0','1CFF','Vedic Extensions'},
{'1D00','1D7F','Phonetic Extensions'},
{'1D80','1DBF','Phonetic Extensions Supplement'},
{'1DC0','1DFF','Combining Diacritical Marks Supplement'},
{'1E00','1EFF','Latin Extended Additional'},
{'1F00','1FFF','Greek Extended'},
{'2000','206F','General Punctuation'},
{'2070','209F','Superscripts and Subscripts'},
{'20A0','20CF','Currency Symbols'},
{'20D0','20FF','Combining Diacritical Marks for Symbols'},
{'2100','214F','Letterlike Symbols'},
{'2150','218F','Number Forms'},
{'2190','21FF','Arrows'},
{'2200','22FF','Mathematical Operators'},
{'2300','23FF','Miscellaneous Technical'},
{'2400','243F','Control Pictures'},
{'2440','245F','Optical Character Recognition'},
{'2460','24FF','Enclosed Alphanumerics'},
{'2500','257F','Box Drawing'},
{'2580','259F','Block Elements'},
{'25A0','25FF','Geometric Shapes'},
{'2600','26FF','Miscellaneous Symbols'},
{'2700','27BF','Dingbats'},
{'27C0','27EF','Miscellaneous Mathematical Symbols-A'},
{'27F0','27FF','Supplemental Arrows-A'},
{'2800','28FF','Braille Patterns'},
{'2900','297F','Supplemental Arrows-B'},
{'2980','29FF','Miscellaneous Mathematical Symbols-B'},
{'2A00','2AFF','Supplemental Mathematical Operators'},
{'2B00','2BFF','Miscellaneous Symbols and Arrows'},
{'2C00','2C5F','Glagolitic'},
{'2C60','2C7F','Latin Extended-C'},
{'2C80','2CFF','Coptic'},
{'2D00','2D2F','Georgian Supplement'},
{'2D30','2D7F','Tifinagh'},
{'2D80','2DDF','Ethiopic Extended'},
{'2DE0','2DFF','Cyrillic Extended-A'},
{'2E00','2E7F','Supplemental Punctuation'},
{'2E80','2EFF','CJK Radicals Supplement'},
{'2F00','2FDF','Kangxi Radicals'},
{'2FF0','2FFF','Ideographic Description Characters'},
{'3000','303F','CJK Symbols and Punctuation'},
{'3040','309F','Hiragana'},
{'30A0','30FF','Katakana'},
{'3100','312F','Bopomofo'},
{'3130','318F','Hangul Compatibility Jamo'},
{'3190','319F','Kanbun'},
{'31A0','31BF','Bopomofo Extended'},
{'31C0','31EF','CJK Strokes'},
{'31F0','31FF','Katakana Phonetic Extensions'},
{'3200','32FF','Enclosed CJK Letters and Months'},
{'3300','33FF','CJK Compatibility'},
{'3400','4DBF','CJK Unified Ideographs Extension A'},
{'4DC0','4DFF','Yijing Hexagram Symbols'},
{'4E00','9FFF','CJK Unified Ideographs'},
{'A000','A48F','Yi Syllables'},
{'A490','A4CF','Yi Radicals'},
{'A4D0','A4FF','Lisu'},
{'A500','A63F','Vai'},
{'A640','A69F','Cyrillic Extended-B'},
{'A6A0','A6FF','Bamum'},
{'A700','A71F','Modifier Tone Letters'},
{'A720','A7FF','Latin Extended-D'},
{'A800','A82F','Syloti Nagri'},
{'A830','A83F','Common Indic Number Forms'},
{'A840','A87F','Phags-pa'},
{'A880','A8DF','Saurashtra'},
{'A8E0','A8FF','Devanagari Extended'},
{'A900','A92F','Kayah Li'},
{'A930','A95F','Rejang'},
{'A960','A97F','Hangul Jamo Extended-A'},
{'A980','A9DF','Javanese'},
{'A9E0','A9FF','Myanmar Extended-B'},
{'AA00','AA5F','Cham'},
{'AA60','AA7F','Myanmar Extended-A'},
{'AA80','AADF','Tai Viet'},
{'AAE0','AAFF','Meetei Mayek Extensions'},
{'AB00','AB2F','Ethiopic Extended-A'},
{'AB30','AB6F','Latin Extended-E'},
{'AB70','ABBF','Cherokee Supplement'},
{'ABC0','ABFF','Meetei Mayek'},
{'AC00','D7AF','Hangul Syllables'},
{'D7B0','D7FF','Hangul Jamo Extended-B'},
{'D800','DB7F','High Surrogates'},
{'DB80','DBFF','High Private Use Surrogates'},
{'DC00','DFFF','Low Surrogates'},
{'E000','F8FF','Private Use Area'},
{'F900','FAFF','CJK Compatibility Ideographs'},
{'FB00','FB4F','Alphabetic Presentation Forms'},
{'FB50','FDFF','Arabic Presentation Forms-A'},
{'FE00','FE0F','Variation Selectors'},
{'FE10','FE1F','Vertical Forms'},
{'FE20','FE2F','Combining Half Marks'},
{'FE30','FE4F','CJK Compatibility Forms'},
{'FE50','FE6F','Small Form Variants'},
{'FE70','FEFF','Arabic Presentation Forms-B'},
{'FF00','FFEF','Halfwidth and Fullwidth Forms'},
{'FFF0','FFFF','Specials'},
{'10000','1007F','Linear B Syllabary'},
{'10080','100FF','Linear B Ideograms'},
{'10100','1013F','Aegean Numbers'},
{'10140','1018F','Ancient Greek Numbers'},
{'10190','101CF','Ancient Symbols'},
{'101D0','101FF','Phaistos Disc'},
{'10280','1029F','Lycian'},
{'102A0','102DF','Carian'},
{'102E0','102FF','Coptic Epact Numbers'},
{'10300','1032F','Old Italic'},
{'10330','1034F','Gothic'},
{'10350','1037F','Old Permic'},
{'10380','1039F','Ugaritic'},
{'103A0','103DF','Old Persian'},
{'10400','1044F','Deseret'},
{'10450','1047F','Shavian'},
{'10480','104AF','Osmanya'},
{'10500','1052F','Elbasan'},
{'10530','1056F','Caucasian Albanian'},
{'10600','1077F','Linear A'},
{'10800','1083F','Cypriot Syllabary'},
{'10840','1085F','Imperial Aramaic'},
{'10860','1087F','Palmyrene'},
{'10880','108AF','Nabataean'},
{'108E0','108FF','Hatran'},
{'10900','1091F','Phoenician'},
{'10920','1093F','Lydian'},
{'10980','1099F','Meroitic Hieroglyphs'},
{'109A0','109FF','Meroitic Cursive'},
{'10A00','10A5F','Kharoshthi'},
{'10A60','10A7F','Old South Arabian'},
{'10A80','10A9F','Old North Arabian'},
{'10AC0','10AFF','Manichaean'},
{'10B00','10B3F','Avestan'},
{'10B40','10B5F','Inscriptional Parthian'},
{'10B60','10B7F','Inscriptional Pahlavi'},
{'10B80','10BAF','Psalter Pahlavi'},
{'10C00','10C4F','Old Turkic'},
{'10C80','10CFF','Old Hungarian'},
{'10E60','10E7F','Rumi Numeral Symbols'},
{'11000','1107F','Brahmi'},
{'11080','110CF','Kaithi'},
{'110D0','110FF','Sora Sompeng'},
{'11100','1114F','Chakma'},
{'11150','1117F','Mahajani'},
{'11180','111DF','Sharada'},
{'111E0','111FF','Sinhala Archaic Numbers'},
{'11200','1124F','Khojki'},
{'11280','112AF','Multani'},
{'112B0','112FF','Khudawadi'},
{'11300','1137F','Grantha'},
{'11480','114DF','Tirhuta'},
{'11580','115FF','Siddham'},
{'11600','1165F','Modi'},
{'11680','116CF','Takri'},
{'11700','1173F','Ahom'},
{'118A0','118FF','Warang Citi'},
{'11AC0','11AFF','Pau Cin Hau'},
{'12000','123FF','Cuneiform'},
{'12400','1247F','Cuneiform Numbers and Punctuation'},
{'12480','1254F','Early Dynastic Cuneiform'},
{'13000','1342F','Egyptian Hieroglyphs'},
{'14400','1467F','Anatolian Hieroglyphs'},
{'16800','16A3F','Bamum Supplement'},
{'16A40','16A6F','Mro'},
{'16AD0','16AFF','Bassa Vah'},
{'16B00','16B8F','Pahawh Hmong'},
{'16F00','16F9F','Miao'},
{'1B000','1B0FF','Kana Supplement'},
{'1BC00','1BC9F','Duployan'},
{'1BCA0','1BCAF','Shorthand Format Controls'},
{'1D000','1D0FF','Byzantine Musical Symbols'},
{'1D100','1D1FF','Musical Symbols'},
{'1D200','1D24F','Ancient Greek Musical Notation'},
{'1D300','1D35F','Tai Xuan Jing Symbols'},
{'1D360','1D37F','Counting Rod Numerals'},
{'1D400','1D7FF','Mathematical Alphanumeric Symbols'},
{'1D800','1DAAF','Sutton SignWriting'},
{'1E800','1E8DF','Mende Kikakui'},
{'1EE00','1EEFF','Arabic Mathematical Alphabetic Symbols'},
{'1F000','1F02F','Mahjong Tiles'},
{'1F030','1F09F','Domino Tiles'},
{'1F0A0','1F0FF','Playing Cards'},
{'1F100','1F1FF','Enclosed Alphanumeric Supplement'},
{'1F200','1F2FF','Enclosed Ideographic Supplement'},
{'1F300','1F5FF','Miscellaneous Symbols and Pictographs'},
{'1F600','1F64F','Emoticons'},
{'1F650','1F67F','Ornamental Dingbats'},
{'1F680','1F6FF','Transport and Map Symbols'},
{'1F700','1F77F','Alchemical Symbols'},
{'1F780','1F7FF','Geometric Shapes Extended'},
{'1F800','1F8FF','Supplemental Arrows-C'},
{'1F900','1F9FF','Supplemental Symbols and Pictographs'},
{'20000','2A6DF','CJK Unified Ideographs Extension B'},
{'2A700','2B73F','CJK Unified Ideographs Extension C'},
{'2B740','2B81F','CJK Unified Ideographs Extension D'},
{'2B820','2CEAF','CJK Unified Ideographs Extension E'},
{'2F800','2FA1F','CJK Compatibility Ideographs Supplement'},
{'E0000','E007F','Tags'},
{'E0100','E01EF','Variation Selectors Supplement'},
{'F0000','FFFFF','Supplementary Private Use Area-A'},
{'100000','10FFFF','Supplementary Private Use Area-B'}
}


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


local function unicode(str)
local p = {}
return 'U+' .. ustring.upper(string.format("%x", ustring.codepoint(str)))
function p.unicodeBlock(data)
end
local char
 
if data == nil then
-----------------------------------------------------------------------------------------------------
return ' '
 
elseif type(data) == 'table' then
local function renderVariant(text, hanja, lang)
char = data.args[1]
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
-- 메인 상자
function hanjaInfo:render(lang)
local langTable = {}
if lang == "중국어" or lang == '간체자' then
        langTable = { 'simplified', 'traditional', 'japan' }
elseif lang == "일본어" or lang == '신자체' then
        langTable = { 'japan', 'traditional', 'simplified' }
else
langTable = { 'traditional', 'japan', 'simplified' }
end
    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")
    local libre_tab_main = html.create("div"):addClass("libre-tab-main")
 
    local tabtitles = {
        ['traditional'] = '한국어[韓/臺]',
        ['simplified'] = '중국어[中]',
        ['japan'] = '일본어[日]'
    }
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):addClass("libre-tab-btn-active"):wikitext(tabtitles[langTable[1]])
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(tabtitles[langTable[2]])
libre_tab_btns:tag("div"):addClass("libre-tab-btn"):wikitext(tabtitles[langTable[3]])
self:traditional(); self:japan(); self:simplified()
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):addClass("libre-tab-main-content-active"):node(self[langTable[1]])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(self[langTable[2]])
libre_tab_main:tag("div"):addClass("libre-tab-main-content"):node(self[langTable[3]])
libre_tab:node(libre_tab_btns)
libre_tab:node(libre_tab_main)
render:node(libre_tab)
 
return tostring(self.hanja_header)..tostring(render)
end
 
function hanjaInfo:japan()
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(self.jap["한자"])
render:tag("tr"):node(hanja_)
 
render:node(renderTrThTd("뜻(訓)", self.jap["뜻"]))
render:node(renderTrThTd("훈독(訓読)", self.jap["훈독"]))
if self.jap["오음"] == '' and self.jap["한음"] == '' and self.jap["당음"] == '' and
self.jap["관용음"] == '' then
render:node(renderTrThTd("음독(音読)", self.jap["음독"]))
else
else
render:node(renderTrTh("음독(音読)", self.jap["음독"]))
char = data
render:node(renderTrThTd("오음(吳音)", self.jap["오음"]))
render:node(renderTrThTd("한음(漢音)", self.jap["한음"]))
render:node(renderTrThTd("당음(唐音)", self.jap["당음"]))
render:node(renderTrThTd("관용음", self.jap["관용음"]))
end
 
render:node(renderTrThTd("[[부수]]", '[[' .. self.jap["부수"] .. ']]'))
render:node(renderTrThTd("[[유니코드]]", unicode(self.jap["한자"])))
 
local strokeorder = html.create("tr")
strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center"):node(strokeOrder(self.jap["획수"] .. "획", self.jap["한자"], "", self.jap["획순파일"], 'japan'))
 
render:node(strokeorder)
self['japan'] = render
end
 
function hanjaInfo:simplified()
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(self.simp["한자"])
 
render:tag("tr"):node(hanja_)
 
render:node(renderTrThTd("뜻(訓)", self.simp["뜻"]))
render:node(renderTrThTd("중국어 병음", self.simp["병음"]))
if self.simp["중고한어"] ~= "" then
render:node(renderTrThTd("중고한어", self.simp["중고한어"]))
end
render:node(renderTrThTd("[[부수]]", '[[' .. self.simp["부수"] .. ']]'))
render:node(renderTrThTd("[[유니코드]]", unicode(self.simp["한자"])))
 
local strokeorder = html.create("tr")
strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center"):node(strokeOrder(self.simp["획수"] .. "획", self.simp["한자"], "",self.simp["획순파일"]))
 
render:node(strokeorder)
self['simplified'] = render
end
 
function hanjaInfo: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.trad["한자"])
 
if self.trad["대만식"] ~= "" then
hanja_text:node(renderVariant("대만", self.trad["대만식"], "zh-tw"))
end
end
render:tag("tr"):node(hanja_text)
local codepoint = mw.ustring.codepoint(char)
 
local endN = #uniBlock
render:node(renderTrThTd("뜻(訓)", self.trad["뜻"]))
for n= 1, endN do
render:node(renderTrThTd("소리(音)", self.trad["소리"]))
--local end_ = tonumber(uniBlock[n][2], 16)
render:node(renderTrThTd("[[부수]]", '[[' .. self.trad["부수"] .. ']]'))
if codepoint <= tonumber(uniBlock[n][2], 16) then
render:node(renderTrThTd("[[유니코드]]", unicode(self.trad["한자"])))
--local start_ = tonumber(uniBlock[n][1], 16)
 
--if start_ <= codepoint then
local bool
return uniBlock[n][3]
for k in pairs(self.trad["이체자"]) do
--end
if self.trad["이체자"][k] ~= "" then
bool = true
break
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.trad["이체자"][i] ~= '' then
hanja_variants:node(renderVariant(self.trad["이체자 이름"][i],self.trad["이체자"][i], "ko"))
end
i = i + 1
end
end
hanja_variant:tag("td"):node(hanja_variants)
render:node(hanja_variant)
end
end
local strokeorder = html.create("tr")
strokeorder:tag("td"):attr("colspan", "2"):css("text-align", "center"):node(strokeOrder(self.trad["획수"] .. "획", self.trad["한자"], "", self.trad["획순파일"]))
render:node(strokeorder)
self['traditional'] = render
end
end
 
-- 함수 호출 축약형
function hanjaInfo.main(frame) return hanjaInfo:main_(frame) end
p._ = p.unicodeBlock
function hanjaInfo:main_(frame)
return p
local args = getArgs(frame)
local css
 
if args['모드'] == '목록' then
local hanja = args["한자"]
self.hanja_header = html.create('span')
self.hanja_header:tag('span'):addClass("hanja")
:wikitext('【[[시리즈:리브레 한자사전/' .. hanja ..'|' .. hanja .. ']]】')
if args['소리'] == " " then
self.hanja_header:tag('span'):addClass('mean')
:wikitext(args["뜻"])
else
self.hanja_header:tag('span'):addClass('mean')
:wikitext(args["뜻"] .. '〔' .. args["소리"] .. '〕')
end
 
return self.hanja_header
else
self.hanja_header = html.create('div'):addClass("hanja-info-head")
css = args['css']
end
 
self.trad = {
["한자"] = args["한자"] or " ",
["뜻"] = args["뜻"] or " ",
["소리"] = args["소리"] or '-',
["부수"] = args["부수"] or " ",
["획수"] = args["획수"] or " ",
["획순파일"] = args["획순파일"],
["대만식"] = 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 ""
},
["이체자 이름"] = {
"약자", "속자", "본자", "&nbsp;", "&nbsp;", "&nbsp;",
"&nbsp;", "&nbsp;"
}
}
self.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["획순파일"],
["부수"] = args["신자체 부수"] or args["부수"] or " "
}
self.simp = {
["한자"] = args["간체자"] or args["한자"] or " ",
["뜻"] = args["뜻"] or " ",
["병음"] = args["병음"] or " ",
["중고한어"] = args["중고한어"] or "",
["획수"] = args["간체자 획수"] or args["획수"] or " ",
["획순파일"] = args["간체자 획순파일"] or
args["획순파일"],
["부수"] = args["간체자 부수"] or args["부수"] or " "
}
 
if args['모드'] == '한자' then
self.hanja_header:tag('span'):addClass('hanja')
:wikitext('[[' ..self.trad["한자"] ..']]' .. css)
return self.hanja_header
 
elseif args['모드'] == '신자체' or args[1] == '일본어' then
self.hanja_header:tag('span'):addClass('hanja'):attr('lang', 'ja'):css('font-family', 'Noto Serif CJK KR, serif')
:wikitext('[[' ..self.jap["한자"] ..']]' .. css)
return self.hanja_header
 
elseif args['모드'] == '훈음' then
self.hanja_header:tag('span'):addClass('hanja')
:wikitext('[[' ..self.trad["한자"] ..']]')
if args['소리'] == " " then
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.trad["뜻"] ..css)
else
self.hanja_header:tag('span'):addClass('mean'):wikitext(' ' .. self.trad["뜻"] .. ' <i>〔</i>' .. self.trad["소리"] .. '<i>〕</i>' ..css)
end
return self.hanja_header
 
elseif args['모드'] == '풀이' then
return ''
end
local currentPage = title_.getCurrentTitle().prefixedText
local index = ustring.find(currentPage, '/') or 0
if not index == 0 then
local subPage = ustring.sub(currentPage, index+1, -1)
local rootPage = ustring.sub(currentPage, 1, index-1)
self.hanja_header:wikitext(subPage)
else
local subPage = ''
local rootPage = currentPage
end
--if self.trad["한자"] == subPage then
-- self.hanja_header:wikitext('[[분류:'..self.trad["부수"]..']]')
--end
if rootPage == '시리즈:리브레 한자사전' then
if self.trad["소리"] == '-' then
self.hanja_header:wikitext('[[분류:한자/문자|  ]]')
else
self.hanja_header:wikitext('[[분류:한자/문자|'..self.trad['소리']..']]')
end
if ustring.codepoint(self.trad["한자"]) > 65535 then
        self.hanja_header:wikitext('[[분류:'..unicode(self.trad["한자"])..']]')
        if not args['상위문서x'] then self.hanja_header:wikitext(args['parentLink']) end
self.hanja_header:tag('span'):addClass('hanja'):wikitext('[[' .. unicode(self.trad["한자"]) ..'|'.. self.trad["한자"] ..']]')
else
          self.hanja_header:wikitext('[[분류:'..self.trad["한자"]..']]')
        if not args['상위문서x'] then self.hanja_header:wikitext(args['parentLink']) end
self.hanja_header:tag('span'):addClass('hanja'):wikitext('[[' ..self.trad["한자"] ..']]')
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.trad["뜻"] .. ' <i>〔</i>' .. self.trad["소리"] .. '<i>〕</i>__NOTOC__' ..css)
--end
return self:render(args["기본"])
end
------------------------------------------------------------------------------------
--[[function hanja.flexlist(frame)
local args = getArgs(frame)
local i = 1
local list = html.create('div'):addClass('hanja-list-flex'):cssText('display: flex;flex-wrap: wrap;text-align:center;')
 
while args[i] do
local _ = html.create('div'):cssText('width: 130px')
local j = 1
for w in ustring.gmatch(args[i], '[^;]+') do
if j == 1 then
_:tag('div'):cssText('font-size: 1.8em;line-height: 1em;'):wikitext(w)
end
if j == 2 then
_:tag('div'):wikitext(w)
end
j = j + 1
end
list:node(_)
i = i + 1
end
return list
end]]
 
return hanjaInfo

2021년 12월 24일 (금) 00:55 기준 최신판

설명문서 [편집] [역사] [새로고침]

문자를 입력하면 유니코드 블록 위치가 출력됩니다.

Basic Latin

Basic Latin

Hangul Syllables

Greek and Coptic

{{#invoke:unicodeBlock|unicodeBlock|1}}
{{#invoke:unicodeBlock|unicodeBlock|Z}}
{{#invoke:unicodeBlock|_|한}}
{{#invoke:unicodeBlock|_|Σ}}
연습장이나 사용자 문서에서 틀의 사용이나 수정을 연습할 수 있습니다.
분류는 /설명문서에 넣어주세요.

local uniBlock = {
	{'0000','007F','Basic Latin'},
	{'0080','00FF','Latin-1 Supplement'},
	{'0100','017F','Latin Extended-A'},
	{'0180','024F','Latin Extended-B'},
	{'0250','02AF','IPA Extensions'},
	{'02B0','02FF','Spacing Modifier Letters'},
	{'0300','036F','Combining Diacritical Marks'},
	{'0370','03FF','Greek and Coptic'},
	{'0400','04FF','Cyrillic'},
	{'0500','052F','Cyrillic Supplement'},
	{'0530','058F','Armenian'},
	{'0590','05FF','Hebrew'},
	{'0600','06FF','Arabic'},
	{'0700','074F','Syriac'},
	{'0750','077F','Arabic Supplement'},
	{'0780','07BF','Thaana'},
	{'07C0','07FF','NKo'},
	{'0800','083F','Samaritan'},
	{'0840','085F','Mandaic'},
	{'08A0','08FF','Arabic Extended-A'},
	{'0900','097F','Devanagari'},
	{'0980','09FF','Bengali'},
	{'0A00','0A7F','Gurmukhi'},
	{'0A80','0AFF','Gujarati'},
	{'0B00','0B7F','Oriya'},
	{'0B80','0BFF','Tamil'},
	{'0C00','0C7F','Telugu'},
	{'0C80','0CFF','Kannada'},
	{'0D00','0D7F','Malayalam'},
	{'0D80','0DFF','Sinhala'},
	{'0E00','0E7F','Thai'},
	{'0E80','0EFF','Lao'},
	{'0F00','0FFF','Tibetan'},
	{'1000','109F','Myanmar'},
	{'10A0','10FF','Georgian'},
	{'1100','11FF','Hangul Jamo'},
	{'1200','137F','Ethiopic'},
	{'1380','139F','Ethiopic Supplement'},
	{'13A0','13FF','Cherokee'},
	{'1400','167F','Unified Canadian Aboriginal Syllabics'},
	{'1680','169F','Ogham'},
	{'16A0','16FF','Runic'},
	{'1700','171F','Tagalog'},
	{'1720','173F','Hanunoo'},
	{'1740','175F','Buhid'},
	{'1760','177F','Tagbanwa'},
	{'1780','17FF','Khmer'},
	{'1800','18AF','Mongolian'},
	{'18B0','18FF','Unified Canadian Aboriginal Syllabics Extended'},
	{'1900','194F','Limbu'},
	{'1950','197F','Tai Le'},
	{'1980','19DF','New Tai Lue'},
	{'19E0','19FF','Khmer Symbols'},
	{'1A00','1A1F','Buginese'},
	{'1A20','1AAF','Tai Tham'},
	{'1AB0','1AFF','Combining Diacritical Marks Extended'},
	{'1B00','1B7F','Balinese'},
	{'1B80','1BBF','Sundanese'},
	{'1BC0','1BFF','Batak'},
	{'1C00','1C4F','Lepcha'},
	{'1C50','1C7F','Ol Chiki'},
	{'1CC0','1CCF','Sundanese Supplement'},
	{'1CD0','1CFF','Vedic Extensions'},
	{'1D00','1D7F','Phonetic Extensions'},
	{'1D80','1DBF','Phonetic Extensions Supplement'},
	{'1DC0','1DFF','Combining Diacritical Marks Supplement'},
	{'1E00','1EFF','Latin Extended Additional'},
	{'1F00','1FFF','Greek Extended'},
	{'2000','206F','General Punctuation'},
	{'2070','209F','Superscripts and Subscripts'},
	{'20A0','20CF','Currency Symbols'},
	{'20D0','20FF','Combining Diacritical Marks for Symbols'},
	{'2100','214F','Letterlike Symbols'},
	{'2150','218F','Number Forms'},
	{'2190','21FF','Arrows'},
	{'2200','22FF','Mathematical Operators'},
	{'2300','23FF','Miscellaneous Technical'},
	{'2400','243F','Control Pictures'},
	{'2440','245F','Optical Character Recognition'},
	{'2460','24FF','Enclosed Alphanumerics'},
	{'2500','257F','Box Drawing'},
	{'2580','259F','Block Elements'},
	{'25A0','25FF','Geometric Shapes'},
	{'2600','26FF','Miscellaneous Symbols'},
	{'2700','27BF','Dingbats'},
	{'27C0','27EF','Miscellaneous Mathematical Symbols-A'},
	{'27F0','27FF','Supplemental Arrows-A'},
	{'2800','28FF','Braille Patterns'},
	{'2900','297F','Supplemental Arrows-B'},
	{'2980','29FF','Miscellaneous Mathematical Symbols-B'},
	{'2A00','2AFF','Supplemental Mathematical Operators'},
	{'2B00','2BFF','Miscellaneous Symbols and Arrows'},
	{'2C00','2C5F','Glagolitic'},
	{'2C60','2C7F','Latin Extended-C'},
	{'2C80','2CFF','Coptic'},
	{'2D00','2D2F','Georgian Supplement'},
	{'2D30','2D7F','Tifinagh'},
	{'2D80','2DDF','Ethiopic Extended'},
	{'2DE0','2DFF','Cyrillic Extended-A'},
	{'2E00','2E7F','Supplemental Punctuation'},
	{'2E80','2EFF','CJK Radicals Supplement'},
	{'2F00','2FDF','Kangxi Radicals'},
	{'2FF0','2FFF','Ideographic Description Characters'},
	{'3000','303F','CJK Symbols and Punctuation'},
	{'3040','309F','Hiragana'},
	{'30A0','30FF','Katakana'},
	{'3100','312F','Bopomofo'},
	{'3130','318F','Hangul Compatibility Jamo'},
	{'3190','319F','Kanbun'},
	{'31A0','31BF','Bopomofo Extended'},
	{'31C0','31EF','CJK Strokes'},
	{'31F0','31FF','Katakana Phonetic Extensions'},
	{'3200','32FF','Enclosed CJK Letters and Months'},
	{'3300','33FF','CJK Compatibility'},
	{'3400','4DBF','CJK Unified Ideographs Extension A'},
	{'4DC0','4DFF','Yijing Hexagram Symbols'},
	{'4E00','9FFF','CJK Unified Ideographs'},
	{'A000','A48F','Yi Syllables'},
	{'A490','A4CF','Yi Radicals'},
	{'A4D0','A4FF','Lisu'},
	{'A500','A63F','Vai'},
	{'A640','A69F','Cyrillic Extended-B'},
	{'A6A0','A6FF','Bamum'},
	{'A700','A71F','Modifier Tone Letters'},
	{'A720','A7FF','Latin Extended-D'},
	{'A800','A82F','Syloti Nagri'},
	{'A830','A83F','Common Indic Number Forms'},
	{'A840','A87F','Phags-pa'},
	{'A880','A8DF','Saurashtra'},
	{'A8E0','A8FF','Devanagari Extended'},
	{'A900','A92F','Kayah Li'},
	{'A930','A95F','Rejang'},
	{'A960','A97F','Hangul Jamo Extended-A'},
	{'A980','A9DF','Javanese'},
	{'A9E0','A9FF','Myanmar Extended-B'},
	{'AA00','AA5F','Cham'},
	{'AA60','AA7F','Myanmar Extended-A'},
	{'AA80','AADF','Tai Viet'},
	{'AAE0','AAFF','Meetei Mayek Extensions'},
	{'AB00','AB2F','Ethiopic Extended-A'},
	{'AB30','AB6F','Latin Extended-E'},
	{'AB70','ABBF','Cherokee Supplement'},
	{'ABC0','ABFF','Meetei Mayek'},
	{'AC00','D7AF','Hangul Syllables'},
	{'D7B0','D7FF','Hangul Jamo Extended-B'},
	{'D800','DB7F','High Surrogates'},
	{'DB80','DBFF','High Private Use Surrogates'},
	{'DC00','DFFF','Low Surrogates'},
	{'E000','F8FF','Private Use Area'},
	{'F900','FAFF','CJK Compatibility Ideographs'},
	{'FB00','FB4F','Alphabetic Presentation Forms'},
	{'FB50','FDFF','Arabic Presentation Forms-A'},
	{'FE00','FE0F','Variation Selectors'},
	{'FE10','FE1F','Vertical Forms'},
	{'FE20','FE2F','Combining Half Marks'},
	{'FE30','FE4F','CJK Compatibility Forms'},
	{'FE50','FE6F','Small Form Variants'},
	{'FE70','FEFF','Arabic Presentation Forms-B'},
	{'FF00','FFEF','Halfwidth and Fullwidth Forms'},
	{'FFF0','FFFF','Specials'},
	{'10000','1007F','Linear B Syllabary'},
	{'10080','100FF','Linear B Ideograms'},
	{'10100','1013F','Aegean Numbers'},
	{'10140','1018F','Ancient Greek Numbers'},
	{'10190','101CF','Ancient Symbols'},
	{'101D0','101FF','Phaistos Disc'},
	{'10280','1029F','Lycian'},
	{'102A0','102DF','Carian'},
	{'102E0','102FF','Coptic Epact Numbers'},
	{'10300','1032F','Old Italic'},
	{'10330','1034F','Gothic'},
	{'10350','1037F','Old Permic'},
	{'10380','1039F','Ugaritic'},
	{'103A0','103DF','Old Persian'},
	{'10400','1044F','Deseret'},
	{'10450','1047F','Shavian'},
	{'10480','104AF','Osmanya'},
	{'10500','1052F','Elbasan'},
	{'10530','1056F','Caucasian Albanian'},
	{'10600','1077F','Linear A'},
	{'10800','1083F','Cypriot Syllabary'},
	{'10840','1085F','Imperial Aramaic'},
	{'10860','1087F','Palmyrene'},
	{'10880','108AF','Nabataean'},
	{'108E0','108FF','Hatran'},
	{'10900','1091F','Phoenician'},
	{'10920','1093F','Lydian'},
	{'10980','1099F','Meroitic Hieroglyphs'},
	{'109A0','109FF','Meroitic Cursive'},
	{'10A00','10A5F','Kharoshthi'},
	{'10A60','10A7F','Old South Arabian'},
	{'10A80','10A9F','Old North Arabian'},
	{'10AC0','10AFF','Manichaean'},
	{'10B00','10B3F','Avestan'},
	{'10B40','10B5F','Inscriptional Parthian'},
	{'10B60','10B7F','Inscriptional Pahlavi'},
	{'10B80','10BAF','Psalter Pahlavi'},
	{'10C00','10C4F','Old Turkic'},
	{'10C80','10CFF','Old Hungarian'},
	{'10E60','10E7F','Rumi Numeral Symbols'},
	{'11000','1107F','Brahmi'},
	{'11080','110CF','Kaithi'},
	{'110D0','110FF','Sora Sompeng'},
	{'11100','1114F','Chakma'},
	{'11150','1117F','Mahajani'},
	{'11180','111DF','Sharada'},
	{'111E0','111FF','Sinhala Archaic Numbers'},
	{'11200','1124F','Khojki'},
	{'11280','112AF','Multani'},
	{'112B0','112FF','Khudawadi'},
	{'11300','1137F','Grantha'},
	{'11480','114DF','Tirhuta'},
	{'11580','115FF','Siddham'},
	{'11600','1165F','Modi'},
	{'11680','116CF','Takri'},
	{'11700','1173F','Ahom'},
	{'118A0','118FF','Warang Citi'},
	{'11AC0','11AFF','Pau Cin Hau'},
	{'12000','123FF','Cuneiform'},
	{'12400','1247F','Cuneiform Numbers and Punctuation'},
	{'12480','1254F','Early Dynastic Cuneiform'},
	{'13000','1342F','Egyptian Hieroglyphs'},
	{'14400','1467F','Anatolian Hieroglyphs'},
	{'16800','16A3F','Bamum Supplement'},
	{'16A40','16A6F','Mro'},
	{'16AD0','16AFF','Bassa Vah'},
	{'16B00','16B8F','Pahawh Hmong'},
	{'16F00','16F9F','Miao'},
	{'1B000','1B0FF','Kana Supplement'},
	{'1BC00','1BC9F','Duployan'},
	{'1BCA0','1BCAF','Shorthand Format Controls'},
	{'1D000','1D0FF','Byzantine Musical Symbols'},
	{'1D100','1D1FF','Musical Symbols'},
	{'1D200','1D24F','Ancient Greek Musical Notation'},
	{'1D300','1D35F','Tai Xuan Jing Symbols'},
	{'1D360','1D37F','Counting Rod Numerals'},
	{'1D400','1D7FF','Mathematical Alphanumeric Symbols'},
	{'1D800','1DAAF','Sutton SignWriting'},
	{'1E800','1E8DF','Mende Kikakui'},
	{'1EE00','1EEFF','Arabic Mathematical Alphabetic Symbols'},
	{'1F000','1F02F','Mahjong Tiles'},
	{'1F030','1F09F','Domino Tiles'},
	{'1F0A0','1F0FF','Playing Cards'},
	{'1F100','1F1FF','Enclosed Alphanumeric Supplement'},
	{'1F200','1F2FF','Enclosed Ideographic Supplement'},
	{'1F300','1F5FF','Miscellaneous Symbols and Pictographs'},
	{'1F600','1F64F','Emoticons'},
	{'1F650','1F67F','Ornamental Dingbats'},
	{'1F680','1F6FF','Transport and Map Symbols'},
	{'1F700','1F77F','Alchemical Symbols'},
	{'1F780','1F7FF','Geometric Shapes Extended'},
	{'1F800','1F8FF','Supplemental Arrows-C'},
	{'1F900','1F9FF','Supplemental Symbols and Pictographs'},
	{'20000','2A6DF','CJK Unified Ideographs Extension B'},
	{'2A700','2B73F','CJK Unified Ideographs Extension C'},
	{'2B740','2B81F','CJK Unified Ideographs Extension D'},
	{'2B820','2CEAF','CJK Unified Ideographs Extension E'},
	{'2F800','2FA1F','CJK Compatibility Ideographs Supplement'},
	{'E0000','E007F','Tags'},
	{'E0100','E01EF','Variation Selectors Supplement'},
	{'F0000','FFFFF','Supplementary Private Use Area-A'},
	{'100000','10FFFF','Supplementary Private Use Area-B'}
}


local p = {}
function p.unicodeBlock(data)
	local char
	if data == nil then
		return ' '
	elseif type(data) == 'table' then
		 char = data.args[1]
	else
		char = data
	end
	local codepoint = mw.ustring.codepoint(char)
	local endN = #uniBlock
	for n= 1, endN do
		--local end_ = tonumber(uniBlock[n][2], 16)
		if codepoint <= tonumber(uniBlock[n][2], 16) then
			--local start_ = tonumber(uniBlock[n][1], 16)
			--if start_ <= codepoint then
				return uniBlock[n][3]
			--end
		end
	end
end
-- 함수 호출 축약형
p._ = p.unicodeBlock
return p