본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

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

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
편집 요약 없음
편집 요약 없음
214번째 줄: 214번째 줄:
if args['순서반전'] then
if args['순서반전'] then
tr = ustring.format([[
tr = ustring.format([[
<td class='unicodechar-prev' style="width: 7em;font-size:1.2em;"><span lang="]]..lang..[[">%s</td>
<td class='unicodechar-prev' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>
<td class='unicodechar-char' style="width: 6em">
<td class='unicodechar-char' style="width: 6em">
<div style="font-size: 1.8em;line-height: 1.4em;"><b><span lang="]]..lang..[["></b></div>
<div style="font-size: 1.8em;line-height: 1.4em;"><b lang="]]..lang..[["></b></div>
<div style="font-size:80%%; color: gray; line-height: 2.2em;">%s</div>
<div style="font-size:80%%; color: gray; line-height: 2.2em;">%s</div>
</td>
</td>
<td class='unicodechar-next' style="width: 7em;font-size:1.2em;"><span lang="]]..lang..[[">%s</td>]], prev, curr, p.code(curr), next)..tr
<td class='unicodechar-next' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>]], prev, curr, p.code(curr), next)..tr
else
else
tr = tr..ustring.format([[
tr = tr..ustring.format([[
<td class='unicodechar-prev' style="width: 7em;font-size:1.2em;"><span lang="]]..lang..[[">%s</td>
<td class='unicodechar-prev' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>
<td class='unicodechar-char' style="width: 6em">
<td class='unicodechar-char' style="width: 6em">
<div style="font-size: 1.8em;line-height: 1.4em;"><b><span lang="]]..lang..[[">%s</b></div>
<div style="font-size: 1.8em;line-height: 1.4em;"><b lang="]]..lang..[[">%s</b></div>
<div style="font-size:80%%; color: gray; line-height: 2.2em;">%s</div>
<div style="font-size:80%%; color: gray; line-height: 2.2em;">%s</div>
</td>
</td>
<td class='unicodechar-next' style="width: 7em;font-size:1.2em;"><span lang="]]..lang..[[">%s</td>]], prev, curr, p.code(curr), next)
<td class='unicodechar-next' style="width: 7em;font-size:1.2em;" lang="]]..lang..[[">%s</td>]], prev, curr, p.code(curr), next)
end
end
return htmlroot:node(tr)
return htmlroot:node(tr)

2022년 1월 25일 (화) 19:59 판

{{#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"가 존재하지 않습니다.


{{유니코드문자
|이름=왼쪽 대괄호
|이전= Z
|문자=[
|이후= \
|이후이름= 역슬래시
|영어이름= Left Square Bracket}}
위 설명은 모듈: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>
	<div style="font-size:80%%; color: gray; line-height: 2.2em;">%s</div>
</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>
	<div style="font-size:80%%; color: gray; line-height: 2.2em;">%s</div>
</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