Difference between revisions of "Module:Unichar"
Jump to navigation
Jump to search
blackwiki>Erutuon (adapted version of show function from Module:Unicode data/testcases) |
blackwiki>Erutuon (monospace for U+, small caps for name or label) |
||
| Line 25: | Line 25: | ||
return "" | return "" | ||
end | end | ||
| + | end | ||
| + | |||
| + | -- from [[Template:Unichar]] | ||
| + | local styles = { | ||
| + | smallcaps = 'class="smallcaps" style="font-variant: small-caps; font-size: smaller;"', | ||
| + | monospace = 'style="font-family: monospace, monospace;"', -- why repeat it? | ||
| + | } | ||
| + | local function style(text, type) | ||
| + | if not styles[type] then | ||
| + | errorf("Style %s not recognized", type) | ||
| + | end | ||
| + | return ('<span %s>%s</span>'):format(styles[type], text) | ||
| + | end | ||
| + | |||
| + | local function u_plus(codepoint) | ||
| + | return ("U+%04X"):format(codepoint) | ||
end | end | ||
| Line 32: | Line 48: | ||
or errorf("hexadecimal number expected, got '%s'", codepoint) | or errorf("hexadecimal number expected, got '%s'", codepoint) | ||
| − | return (" | + | return ("%s %s %s"):format( |
| − | Unicode_data.lookup_name(codepoint)) | + | style(u_plus(codepoint), "monospace"), |
| + | show(codepoint), | ||
| + | style(Unicode_data.lookup_name(codepoint), "smallcaps")) | ||
end | end | ||
return p | return p | ||
Revision as of 17:50, 30 June 2018
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
-- from [[Template:Unichar]]
local styles = {
smallcaps = 'class="smallcaps" style="font-variant: small-caps; font-size: smaller;"',
monospace = 'style="font-family: monospace, monospace;"', -- why repeat it?
}
local function style(text, type)
if not styles[type] then
errorf("Style %s not recognized", type)
end
return ('<span %s>%s</span>'):format(styles[type], text)
end
local function u_plus(codepoint)
return ("U+%04X"):format(codepoint)
end
function p.unichar(frame)
local codepoint = frame.args[1]
codepoint = tonumber(codepoint, 16)
or errorf("hexadecimal number expected, got '%s'", codepoint)
return ("%s %s %s"):format(
style(u_plus(codepoint), "monospace"),
show(codepoint),
style(Unicode_data.lookup_name(codepoint), "smallcaps"))
end
return p