모듈:Unicode
보이기
{{#css: .template-documentation {
clear: both; margin: 1em 0 0 0; padding: 1em
} /* 아래 상자 */ .mbox-text {
clear: both; background-color: #e8ffe8;
}
.template-documentation-template-data .mw-templatedata-doc-desc {
display: none;
}
}}
모듈:Unicode을 이용합니다.
스크립트 오류: 함수 "uni_char"가 존재하지 않습니다.
{{유니코드문자|[}}
스크립트 오류: 함수 "uni_char"가 존재하지 않습니다.
{{유니코드문자|이름=왼쪽 대괄호|[}}
아래는 가능한 모든 변수들을 나열한 것입니다.
스크립트 오류: 함수 "uni_char"가 존재하지 않습니다.
위 설명은 모듈:Unicode/설명문서의 내용을 가져와 보여주고 있습니다.
연습장이나 사용자 문서에서 틀의 사용이나 수정을 연습할 수 있습니다.
local mw = mw
local ustring = mw.ustring
local getArgs = require('Module:Arguments').getArgs --- frame 변수 처리
local p = {}
------------------------- codepoint ------------------------------------------
---
---문자 코드를 반환합니다.
---@param data table | string table : frame, string : char
---@param base string example) 10 : U+1234, r10 : 1234, 16(normal) : U+ABCD
---@param offset integer
---@return string
function p.code(data, base, offset)
local char
if type(data) == 'table' then
char = getArgs(data)[1] or nil
else
char = data
end
if type(char) == 'number' or type(char) == 'nil' then
return '입력값이 없습니다.'
end
if offset == nil then offset = 0 end
local baseformat, head
p.codepoint = ustring.codepoint(char)
if base == '10' then
baseformat = '%d';
head = 'U+'
elseif base == 'r10' then
return p.codepoint + offset
else
baseformat = '%x';
head = 'U+'
end
return head ..ustring.upper(ustring.format(baseformat, p.codepoint + offset))
end
---------------------- next codepoint ---------------------------------------
---
---입력된 문자의 이후 문자 코드 반환
---@param data table | string table : frame, string : char
---@return string
function p.nextcode(data)
local char
if type(data) == 'table' then
char = getArgs(data)[1] or nil
else
char = data or nil
end
if char then
return p.code(char, '16', 1)
else
return '입력값이 없습니다.'
end
end
---------------------- prev codepoint ---------------------------------------
---
---입력된 문자의 이전 문자 코드 반환
---@param data table | string table : frame, string : char
---@return string
function p.prevcode(data)
local char
if type(data) == 'table' then
char = getArgs(data)[1] or nil
else
char = data or nil
end
if char then
return p.code(char, '16', -1)
else
return '입력값이 없습니다.'
end
end
---------------------- next char ---------------------------------------
---
---입력된 문자의 이후 문자 반환
---@param data table | string table : frame, string : char
---@return string nextchar
function p.nextchar(data)
local char
if type(data) == 'table' then
char = getArgs(data)[1] or nil
else
char = data or nil
end
if char then
return ustring.char(p.code(char, 'r10', 1))
else
return '입력값이 없습니다.'
end
end
---------------------- prev char ---------------------------------------
---
---입력된 문자의 이전 문자 반환
---@param data table | string table : frame, string : char
---@return string prevchar
function p.prevchar(data)
local char
if type(data) == 'table' then
char = getArgs(data)[1] or nil
else
char = data or nil
end
if char then
return ustring.char(p.code(char, 'r10', -1))
else
return '입력값이 없습니다.'
end
end
p.block = require('Module:UnicodeBlock').unicodeBlock
---------------------- {{유니코드문자}} --------------------------
---@param frame table
---@return string
function p.unicodechar(frame)
---@type table
---@
local args = getArgs(frame)
local class
if args['class'] == 'x' then
class = ''
elseif args['class'] == nil then
class = 'infobox'
else
class = args['class']
end
local charname = args['이름'] or mw.title.getCurrentTitle().prefixedText
local curr = args[1] or args['기호'] or args['문자'] or nil
local eng = args['영어이름'] or p.block(curr)
local lang = args['lang'] or 'ko'
local prefix = args['경로'] or ''
local arrowPrev = '<span class="unicodechar-arrow">←</span>'
local arrowNext = '<span class="unicodechar-arrow">→</span>'
local link
if args['템플릿'] then
local buildlink = require('Module:linkwithtemplate').test
link = function(doc, linkname, template, editintro, arrow)
return '<div>' .. buildlink({
['템플릿'] = template,
['editintro'] = editintro,
[1] = doc,
[2] = '<div>'..linkname..'<br>'..arrow..'</div>'
}) .. '</div>'
end
end
local htmlroot = mw.html.create('table')
:addClass(class)
:addClass('unicodechar')
:cssText('margin: 0 auto ;max-width: ;width: ;float: right; text-align: center; clear:right')
local tr, td
if args['이름'] == '없음' then
tr = ustring.format('<tr><th colspan="3"><small>%s</small></th></tr>',eng)
else
tr = ustring.format('<tr><th colspan="3"><div>%s</div><small>%s</small></th></tr>',charname, eng)
end
local prev, next
if curr == nil then
return
'<span class="warning">기호(문자)를 입력하지 않았습니다. |문자 = (문자)</span>'
else
function internalLink( pagename, text, arrow)
arrow = arrow or ''
return ustring.format('[[%s|<div>%s<br>%s</div>]]', pagename, text, arrow)
end
local prev_ = args['이전'] or args['전문자'] or nil;
local next_ = args['이후'] or args['후문자'] or nil;
if prev_ then
local prevname = args['전문자이름'] or args['이전이름'] or prev_
prev = internalLink(prev_, prevname, arrowPrev)
else
local prevchar = ustring.char(p.code(curr, 'r10', -1))
local page, linkname
if ustring.codepoint(prevchar) > 65535 then
local prevcode = p.code(curr, '16', -1)
page = prevcode; linkname = prevchar
else
page = prevchar; linkname = prevchar
end
if args['템플릿'] then
if mw.title.new(page).exists then
prev = internalLink( page, linkname, arrowPrev)
else
prev = link(prefix .. page, linkname, args['템플릿'],args['editintro'], arrowPrev)
end
else
prev = internalLink( page, linkname, arrowPrev)
end
end
if next_ then
local nextname = args['후문자이름'] or args['이후이름'] or next_
next = internalLink( next_, nextname, arrowNext)
else
local nextchar = ustring.char(p.code(curr, 'r10', 1))
local page, linkname
if ustring.codepoint(nextchar) > 65535 then
local nextcode = p.code(curr, '16', 1)
page = nextcode; linkname = nextchar
else
page = nextchar; linkname = nextchar
end
if args['템플릿'] then
if mw.title.new(page).exists then
next = internalLink( page, linkname, arrowNext)
else
next = link(prefix .. page, linkname, args['템플릿'],args['editintro'], arrowNext)
end
else
next = internalLink( page, linkname, arrowNext)
end
end
end
if args['순서반전'] then
tr = ustring.format([[
<td class='unicodechar-prev' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>
<td class='unicodechar-char' style="width: 6em">
<div style="font-size: 1.8em;line-height: 1.4em;"><b lang="]]..lang..[["></b></div>
<span style="font-size:80%%; color: gray; line-height: 2.2em;">%s</span>
</td>
<td class='unicodechar-next' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>]], prev, curr, p.code(curr), next)..tr
else
tr = tr..ustring.format([[
<td class='unicodechar-prev' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>
<td class='unicodechar-char' style="width: 6em">
<div style="font-size: 1.8em;line-height: 1.4em;"><b lang="]]..lang..[[">%s</b></div>
<span style="font-size:80%%; color: gray; line-height: 2.2em;">%s</span>
</td>
<td class='unicodechar-next' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>]], prev, curr, p.code(curr), next)
end
return htmlroot:node(tr)
end
return p