Module:Unichar
Revision as of 05:02, 29 June 2018 by blackwiki>Erutuon (adapted version of show function from Module:Unicode data/testcases)
Tests
- U+00A9 © COPYRIGHT SIGN
- U+0378 <reserved-0378>
- U+AC00 가 HANGUL SYLLABLE GA
local p = {}
local Unicode_data = require "Module:Unicode data"
local function errorf(level, ...)
if type(level) == number then
return error(string.format(...), level + 1)
else -- level is actually the format string.
return error(string.format(level, ...), 2)
end
end
local U = mw.ustring.char
local function show(codepoint)
if Unicode_data.is_printable(codepoint) then
local printed_codepoint = U(codepoint)
if mw.ustring.toNFC(printed_codepoint) ~= printed_codepoint then
printed_codepoint = ("&#x%X;"):format(codepoint)
end
if Unicode_data.is_combining(codepoint) then
printed_codepoint = "◌" .. printed_codepoint
end
return ("%s"):format(printed_codepoint)
else
return ""
end
end
function p.unichar(frame)
local codepoint = frame.args[1]
codepoint = tonumber(codepoint, 16)
or errorf("hexadecimal number expected, got '%s'", codepoint)
return ("U+%04X %s %s"):format(codepoint, show(codepoint),
Unicode_data.lookup_name(codepoint))
end
return p