누리위키:연습장 편집하기

누리위키, 온 누리의 백과사전

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
74번째 줄: 74번째 줄:
  
 
테스트4
 
테스트4
가나다라마바사
 
아자차카타파하
 
  
 
== 테스트 ==
 
== 테스트 ==
84번째 줄: 82번째 줄:
  
 
== 관련 문 ==
 
== 관련 문 ==
{{#related:Test with read more}}
 
{{#related:Another test page}}
 
  
== 연습장두번째 ==
+
{{#related:대문}}
 
 
#  개요
 
#  주요일정
 
{| class="wikitable"
 
|-
 
! No. !! Activity !! Contents
 
|-
 
| 1 || Analysis || As-Is
 
|-
 
| 2 || Design || To-Be
 
|-
 
| 3 || Implementation || Test
 
|}
 
#  투입비용
 
#  투입인력
 
#  참고문서
 
#  '''''맺음말'''''
 
[https://namu.wiki/w/%EC%84%9C%EC%95%88%20%ED%94%BC%EB%9D%BC%EB%AF%B8%EB%93%9C%20%EA%B3%A0%EC%A1%B0%EC%84%A0%20%EB%AC%B8%EB%AA%85%EC%84%A4 만주피라미드]
 
<nowiki>φΧχΨὓὔὗԅИӂٌَُِةئئ٧٥٥‌‌ݫۯژڔړݲڏখঘঞীডডௐ௸ఞటඟඥඦॅोौળิฝมยรຣ໐໌໑໓</nowiki>
 
 
 
  [[파일:Red Apple.jpg|100px]]<ref>사과받으세요^^</ref><br>
 
  [[파일:Imege_88.png]]<ref>떠나세요^^</ref><br>
 
<gallery>
 
감법혼색.png|설명1
 
</gallery>
 
[https://tip.daum.net/question/3131977 만주피라미드]를 소개합니다.
 
 
 
연습장
 
 
 
== 모듈:Message box ==
 
 
 
-- This is a meta-module for producing message box templates, including
 
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.
 
 
 
-- Load necessary modules.
 
require('strict')
 
local getArgs
 
local categoryHandler = require('Module:Category handler')._main
 
local yesno = require('Module:Yesno')
 
local localize = mw.loadData('Module:Message box/localize')
 
 
 
-- Get a language object for formatDate and ucfirst.
 
local lang = mw.language.getContentLanguage()
 
 
 
--------------------------------------------------------------------------------
 
-- Helper functions
 
--------------------------------------------------------------------------------
 
 
 
local function getTitleObject(...)
 
-- Get the title object, passing the function through pcall
 
-- in case we are over the expensive function count limit.
 
local success, title = pcall(mw.title.new, ...)
 
if success then
 
return title
 
end
 
end
 
 
 
local function union(t1, t2)
 
-- Returns the union of two arrays.
 
local vals = {}
 
for i, v in ipairs(t1) do
 
vals[v] = true
 
end
 
for i, v in ipairs(t2) do
 
vals[v] = true
 
end
 
local ret = {}
 
for k in pairs(vals) do
 
table.insert(ret, k)
 
end
 
table.sort(ret)
 
return ret
 
end
 
 
 
local function getArgNums(args, prefix)
 
local nums = {}
 
for k, v in pairs(args) do
 
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
 
if num then
 
table.insert(nums, tonumber(num))
 
end
 
end
 
table.sort(nums)
 
return nums
 
end
 
 
 
local function getDate(date)
 
-- convert yyyy-mm or yyyy-mm-dd to 'yyyy년 m월'
 
local pattern1 = '^(%d%d%d%d)-(%d%d?)$'
 
local pattern2 = '^(%d%d%d%d)-(%d%d?)-(%d%d?)$'
 
 
 
if date then
 
local y, m, _
 
 
y, m = date:match(pattern1)
 
if not y then
 
y, m, _ = date:match(pattern2)
 
end
 
 
local yy, mm = tonumber(y), tonumber(m)
 
 
if yy and mm and yy > 2000 and yy < 2100 and mm > 0 and mm < 13 then
 
return yy .. '년 ' .. mm .. '월'
 
end
 
end
 
 
return date
 
end
 
 
 
--------------------------------------------------------------------------------
 
-- Box class definition
 
--------------------------------------------------------------------------------
 
 
 
local MessageBox = {}
 
MessageBox.__index = MessageBox
 
 
 
function MessageBox.new(boxType, args, cfg)
 
args = args or {}
 
local obj = {}
 
 
 
-- Set the title object and the namespace.
 
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
 
 
 
-- Set the config for our box type.
 
obj.cfg = cfg[boxType]
 
if not obj.cfg then
 
local ns = obj.title.namespace
 
-- boxType is "mbox" or invalid input
 
if ns == 0 then
 
obj.cfg = cfg.ambox -- main namespace
 
elseif ns == 6 then
 
obj.cfg = cfg.imbox -- file namespace
 
elseif ns == 14 then
 
obj.cfg = cfg.cmbox -- category namespace
 
else
 
local nsTable = mw.site.namespaces[ns]
 
if nsTable and nsTable.isTalk then
 
obj.cfg = cfg.tmbox -- any talk namespace
 
else
 
obj.cfg = cfg.ombox -- other namespaces or invalid input
 
end
 
end
 
end
 
 
 
-- Set the arguments, and remove all blank arguments except for the ones
 
-- listed in cfg.allowBlankParams.
 
do
 
local newArgs = {}
 
for k, v in pairs(args) do
 
if v ~= '' then
 
newArgs[k] = v
 
end
 
end
 
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
 
newArgs[param] = args[param]
 
end
 
obj.args = newArgs
 
end
 
 
 
-- Define internal data structure.
 
obj.categories = {}
 
obj.classes = {}
 
 
 
return setmetatable(obj, MessageBox)
 
end
 
 
 
function MessageBox:addCat(ns, cat, sort)
 
if not cat then
 
return nil
 
end
 
if sort then
 
cat = string.format('[[분류:%s|%s]]', cat, sort)
 
else
 
cat = string.format('[[분류:%s]]', cat)
 
end
 
self.categories[ns] = self.categories[ns] or {}
 
table.insert(self.categories[ns], cat)
 
end
 
 
 
function MessageBox:addClass(class)
 
if not class then
 
return nil
 
end
 
table.insert(self.classes, class)
 
end
 
 
 
function MessageBox:setParameters()
 
local args = self.args
 
local cfg = self.cfg
 
 
 
-- Get type data.
 
self.type = args.type
 
local typeData = cfg.types[self.type]
 
self.invalidTypeError = cfg.showInvalidTypeError
 
and self.type
 
and not typeData
 
typeData = typeData or cfg.types[cfg.default]
 
self.typeClass = typeData.class
 
self.typeImage = typeData.image
 
 
 
-- Find if the box has been wrongly substituted.
 
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
 
 
 
-- Find whether we are using a small message box.
 
self.isSmall = cfg.allowSmall and (
 
cfg.smallParam and args.small == cfg.smallParam
 
or not cfg.smallParam and yesno(args.small)
 
)
 
 
 
-- Add attributes, classes and styles.
 
self.id = args.id
 
self:addClass(
 
cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks'
 
)
 
for _, class in ipairs(cfg.classes or {}) do
 
self:addClass(class)
 
end
 
if self.isSmall then
 
self:addClass(cfg.smallClass or 'mbox-small')
 
end
 
self:addClass(self.typeClass)
 
self:addClass(args.class)
 
self.style = args.style
 
self.attrs = args.attrs
 
 
 
-- Set text style.
 
self.textstyle = args.textstyle
 
 
 
-- Find if we are on the template page or not. This functionality is only
 
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
 
-- and cfg.templateCategoryRequireName are set.
 
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
 
if self.useCollapsibleTextFields
 
or cfg.templateCategory
 
and cfg.templateCategoryRequireName
 
then
 
self.name = args.name
 
if self.name then
 
local templateName = mw.ustring.match(
 
self.name,
 
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
 
) or self.name
 
templateName = 'Template:' .. templateName
 
self.templateTitle = getTitleObject(templateName)
 
end
 
self.isTemplatePage = self.templateTitle
 
and mw.title.equals(self.title, self.templateTitle)
 
end
 
 
 
-- Process data for collapsible text fields. At the moment these are only
 
-- used in {{ambox}}.
 
if self.useCollapsibleTextFields then
 
-- Get the self.issue value.
 
if self.isSmall and args.smalltext then
 
self.issue = args.smalltext
 
else
 
local sect
 
if args.sect == '' then
 
sect = 'This ' .. (cfg.sectionDefault or 'page')
 
elseif type(args.sect) == 'string' then
 
sect = 'This ' .. args.sect
 
end
 
local issue = args.issue
 
issue = type(issue) == 'string' and issue ~= '' and issue or nil
 
local text = args.text
 
text = type(text) == 'string' and text or nil
 
local issues = {}
 
table.insert(issues, sect)
 
table.insert(issues, issue)
 
table.insert(issues, text)
 
self.issue = table.concat(issues, ' ')
 
end
 
 
 
-- Get the self.talk value.
 
local talk = args.talk
 
-- Show talk links on the template page or template subpages if the talk
 
-- parameter is blank.
 
if talk == ''
 
and self.templateTitle
 
and (
 
mw.title.equals(self.templateTitle, self.title)
 
or self.title:isSubpageOf(self.templateTitle)
 
)
 
then
 
talk = '#'
 
elseif talk == '' then
 
talk = nil
 
end
 
if talk then
 
-- If the talk value is a talk page, make a link to that page. Else
 
-- assume that it's a section heading, and make a link to the talk
 
-- page of the current page with that section heading.
 
local talkTitle = getTitleObject(talk)
 
local talkArgIsTalkPage = true
 
if not talkTitle or not talkTitle.isTalkPage then
 
talkArgIsTalkPage = false
 
talkTitle = getTitleObject(
 
self.title.text,
 
mw.site.namespaces[self.title.namespace].talk.id
 
)
 
end
 
if talkTitle and talkTitle.exists then
 
local talkText = '내용에 대한 의견이 있으시다면 '
 
if talkArgIsTalkPage then
 
talkText = string.format(
 
'%s [[%s|%s]]에서 나누어 주세요.',
 
talkText,
 
talk,
 
talkTitle.prefixedText
 
)
 
else
 
talkText = string.format(
 
'%s [[%s#%s|토론 문서]]에서 나누어 주세요.',
 
talkText,
 
talkTitle.prefixedText,
 
talk
 
)
 
end
 
self.talk = talkText
 
end
 
end
 
 
 
-- Get other values.
 
self.fix = args.fix ~= '' and args.fix or nil
 
local date
 
if args.date and args.date ~= '' then
 
date = args.date
 
elseif args.date == '' and self.isTemplatePage then
 
date = lang:formatDate('Y년 n월')
 
end
 
if date then
 
self.date = string.format(" <small>(%s)</small>", date)
 
end
 
self.info = args.info
 
end
 
 
 
-- Set the non-collapsible text field. At the moment this is used by all box
 
-- types other than ambox, and also by ambox when small=yes.
 
if self.isSmall then
 
self.text = args.smalltext or args.text
 
else
 
self.text = args.text
 
end
 
 
 
-- Set the below row.
 
self.below = cfg.below and args.below
 
 
 
-- General image settings.
 
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
 
self.imageEmptyCell = cfg.imageEmptyCell
 
if cfg.imageEmptyCellStyle then
 
self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
 
end
 
 
 
-- Left image settings.
 
local imageLeft = self.isSmall and args.smallimage or args.image
 
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
 
or not cfg.imageCheckBlank and imageLeft ~= 'none'
 
then
 
self.imageLeft = imageLeft
 
if not imageLeft then
 
local imageSize = self.isSmall
 
and (cfg.imageSmallSize or '30x30px')
 
or '40x40px'
 
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
 
or 'Imbox notice.png', imageSize)
 
end
 
end
 
 
 
-- Right image settings.
 
local imageRight = self.isSmall and args.smallimageright or args.imageright
 
if not (cfg.imageRightNone and imageRight == 'none') then
 
self.imageRight = imageRight
 
end
 
end
 
 
 
function MessageBox:setMainspaceCategories()
 
local args = self.args
 
local cfg = self.cfg
 
 
 
if not cfg.allowMainspaceCategories then
 
return nil
 
end
 
 
 
local nums = {}
 
for _, prefix in ipairs{'cat', 'category', 'all'} do
 
args[prefix .. '1'] = args[prefix]
 
nums = union(nums, getArgNums(args, prefix))
 
end
 
 
 
-- The following is roughly equivalent to the old {{Ambox/category}}.
 
local date = args.date
 
date = type(date) == 'string' and date
 
local preposition = 'from'
 
for _, num in ipairs(nums) do
 
local mainCat = args['cat' .. tostring(num)]
 
or args['category' .. tostring(num)]
 
local allCat = args['all' .. tostring(num)]
 
mainCat = type(mainCat) == 'string' and mainCat
 
allCat = type(allCat) == 'string' and allCat
 
if mainCat and date and date ~= '' then
 
local catTitle = string.format('%s/%s', mainCat, date)
 
self:addCat(0, catTitle)
 
catTitle = getTitleObject('분류:' .. catTitle)
 
if not catTitle or not catTitle.exists then
 
self:addCat(0, '지정 날짜가 올바르지 않은 틀이 있는 문서')
 
end
 
elseif mainCat and (not date or date == '') then
 
self:addCat(0, mainCat)
 
end
 
if allCat then
 
self:addCat(0, allCat)
 
end
 
end
 
end
 
 
 
function MessageBox:setTemplateCategories()
 
local args = self.args
 
local cfg = self.cfg
 
 
 
-- Add template categories.
 
if cfg.templateCategory then
 
if cfg.templateCategoryRequireName then
 
if self.isTemplatePage then
 
self:addCat(10, cfg.templateCategory)
 
end
 
elseif not self.title.isSubpage then
 
self:addCat(10, cfg.templateCategory)
 
end
 
end
 
 
 
-- Add template error categories.
 
if cfg.templateErrorCategory then
 
local templateErrorCategory = cfg.templateErrorCategory
 
local templateCat, templateSort
 
if not self.name and not self.title.isSubpage then
 
templateCat = templateErrorCategory
 
elseif self.isTemplatePage then
 
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
 
local count = 0
 
for i, param in ipairs(paramsToCheck) do
 
if not args[param] then
 
count = count + 1
 
end
 
end
 
if count > 0 then
 
templateCat = templateErrorCategory
 
templateSort = tostring(count)
 
end
 
if self.categoryNums and #self.categoryNums > 0 then
 
templateCat = templateErrorCategory
 
templateSort = 'C'
 
end
 
end
 
self:addCat(10, templateCat, templateSort)
 
end
 
end
 
 
 
function MessageBox:setAllNamespaceCategories()
 
-- Set categories for all namespaces.
 
if self.invalidTypeError then
 
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
 
self:addCat('all', '잘못된 누리위키 알림 상자', allSort)
 
end
 
if self.isSubstituted then
 
self:addCat('all', '잘못 치환된 틀을 사용한 문서')
 
end
 
end
 
 
 
function MessageBox:setCategories()
 
if self.title.namespace == 0 then
 
self:setMainspaceCategories()
 
elseif self.title.namespace == 10 then
 
self:setTemplateCategories()
 
end
 
self:setAllNamespaceCategories()
 
end
 
 
 
function MessageBox:renderCategories()
 
-- Convert category tables to strings and pass them through
 
-- [[Module:Category handler]].
 
return categoryHandler{
 
main = table.concat(self.categories[0] or {}),
 
template = table.concat(self.categories[10] or {}),
 
all = table.concat(self.categories.all or {}),
 
nocat = self.args.nocat,
 
page = self.args.page
 
}
 
end
 
 
 
function MessageBox:export()
 
local root = mw.html.create()
 
 
 
-- Add the subst check error.
 
if self.isSubstituted and self.name then
 
root:tag('b')
 
:addClass('error')
 
:wikitext(string.format(
 
'<code>%s[[틀:%s|%s]]%s</code> 틀이 잘못 치환되었습니다.',
 
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
 
))
 
end
 
 
 
-- Create the box table.
 
local boxTable = root:tag('table')
 
boxTable:attr('id', self.id or nil)
 
for i, class in ipairs(self.classes or {}) do
 
boxTable:addClass(class or nil)
 
end
 
boxTable
 
:cssText(self.style or nil)
 
:attr('role', 'presentation')
 
 
 
if self.attrs then
 
boxTable:attr(self.attrs)
 
end
 
 
 
-- Add the left-hand image.
 
local row = boxTable:tag('tr')
 
if self.imageLeft then
 
local imageLeftCell = row:tag('td'):addClass('mbox-image')
 
if self.imageCellDiv then
 
-- If we are using a div, redefine imageLeftCell so that the image
 
-- is inside it. Divs use style="width: 52px;", which limits the
 
-- image width to 52px. If any images in a div are wider than that,
 
-- they may overlap with the text or cause other display problems.
 
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
 
end
 
imageLeftCell:wikitext(self.imageLeft or nil)
 
elseif self.imageEmptyCell then
 
-- Some message boxes define an empty cell if no image is specified, and
 
-- some don't. The old template code in templates where empty cells are
 
-- specified gives the following hint: "No image. Cell with some width
 
-- or padding necessary for text cell to have 100% width."
 
row:tag('td')
 
:addClass('mbox-empty-cell')
 
:cssText(self.imageEmptyCellStyle or nil)
 
end
 
 
 
-- Add the text.
 
local textCell = row:tag('td'):addClass('mbox-text')
 
if self.useCollapsibleTextFields then
 
-- The message box uses advanced text parameters that allow things to be
 
-- collapsible. At the moment, only ambox uses this.
 
textCell:cssText(self.textstyle or nil)
 
local textCellSpan = textCell:tag('span')
 
textCellSpan
 
:addClass('mbox-text-span')
 
:wikitext(self.issue or nil)
 
if not self.isSmall then
 
textCellSpan:tag('span')
 
:addClass('hide-when-compact')
 
:wikitext(self.talk and (' ' .. self.talk) or nil)
 
:wikitext(self.fix and ('<br />' .. self.fix) or nil)
 
end
 
textCellSpan:wikitext(self.date and (' ' .. self.date) or nil)
 
if not self.isSmall then
 
textCellSpan
 
:tag('span')
 
:addClass('hide-when-compact')
 
:wikitext(self.info and (' ' .. self.info) or nil)
 
end
 
else
 
-- Default text formatting - anything goes.
 
textCell
 
:cssText(self.textstyle or nil)
 
:wikitext(self.text or nil)
 
end
 
 
 
-- Add the right-hand image.
 
if self.imageRight then
 
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
 
if self.imageCellDiv then
 
-- If we are using a div, redefine imageRightCell so that the image
 
-- is inside it.
 
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
 
end
 
imageRightCell
 
:wikitext(self.imageRight or nil)
 
end
 
 
 
-- Add the below row.
 
if self.below then
 
boxTable:tag('tr')
 
:tag('td')
 
:attr('colspan', self.imageRight and '3' or '2')
 
:addClass('mbox-text')
 
:cssText(self.textstyle or nil)
 
:wikitext(self.below or nil)
 
end
 
 
 
-- Add error message for invalid type parameters.
 
if self.invalidTypeError then
 
root:tag('div')
 
:css('text-align', 'center')
 
:wikitext(string.format(
 
'이 메시지 상자는 유효하지 않은 "type=%s" 변수를 사용하고 있으므로 수정이 필요합니다.',
 
self.type or ''
 
))
 
end
 
 
 
-- Add categories.
 
root:wikitext(self:renderCategories() or nil)
 
 
 
return tostring(root)
 
end
 
 
 
--------------------------------------------------------------------------------
 
-- Exports
 
--------------------------------------------------------------------------------
 
 
 
local p, mt = {}, {}
 
 
 
function p._exportClasses()
 
-- For testing.
 
return {
 
MessageBox = MessageBox
 
}
 
end
 
 
 
function p.main(boxType, args, cfgTables)
 
local newargs = {}
 
for k, v in pairs(args) do
 
newargs[localize.arg_map[k] or k] = v
 
end
 
if newargs.type ~= nil then
 
newargs.type = localize.type_map[newargs.type] or newargs.type
 
end
 
if newargs.small ~= nil then
 
newargs.small = localize.small_map[newargs.small] or newargs.small
 
end
 
 
if newargs.image == '없음' then newargs.image = 'none' end
 
if newargs.imageright == '없음' then newargs.imageright = 'none' end
 
if newargs.smallimage == '없음' then newargs.smallimage = 'none' end
 
if newargs.smallimageright == '없음' then newargs.smallimageright = 'none' end
 
if newargs.date then newargs.date = getDate(newargs.date) end
 
 
 
local box = MessageBox.new(boxType, newargs, cfgTables or mw.loadData('Module:Message box/configuration'))
 
box:setParameters()
 
box:setCategories()
 
return box:export()
 
end
 
 
 
function mt.__index(t, k)
 
return function (frame)
 
if not getArgs then
 
getArgs = require('Module:Arguments').getArgs
 
end
 
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
 
end
 
end
 
 
 
return setmetatable(p, mt)
 
 
 
== 모듈:Check for unknown parameters ==
 
 
 
-- This module may be used to compare the arguments passed to the parent
 
-- with a list of arguments, returning a specified result if an argument is
 
-- not on the list
 
local p = {}
 
 
 
local function trim(s)
 
return s:match('^%s*(.-)%s*$')
 
end
 
 
 
local function isnotempty(s)
 
return s and s:match('%S')
 
end
 
 
 
local function clean(text)
 
-- Return text cleaned for display and truncated if too long.
 
-- Strip markers are replaced with dummy text representing the original wikitext.
 
local pos, truncated
 
local function truncate(text)
 
if truncated then
 
return ''
 
end
 
if mw.ustring.len(text) > 25 then
 
truncated = true
 
text = mw.ustring.sub(text, 1, 25) .. '...'
 
end
 
return mw.text.nowiki(text)
 
end
 
local parts = {}
 
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
 
pos = remainder
 
table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;')
 
end
 
table.insert(parts, truncate(text:sub(pos or 1)))
 
return table.concat(parts)
 
end
 
 
 
function p._check(args, pargs)
 
if type(args) ~= "table" or type(pargs) ~= "table" then
 
-- TODO: error handling
 
return
 
end
 
 
 
-- create the list of known args, regular expressions, and the return string
 
local knownargs = {}
 
local regexps = {}
 
for k, v in pairs(args) do
 
if type(k) == 'number' then
 
v = trim(v)
 
knownargs[v] = 1
 
elseif k:find('^regexp[1-9][0-9]*$') then
 
table.insert(regexps, '^' .. v .. '$')
 
end
 
end
 
 
 
-- loop over the parent args, and make sure they are on the list
 
local ignoreblank = isnotempty(args['ignoreblank'])
 
local showblankpos = isnotempty(args['showblankpositional'])
 
local values = {}
 
for k, v in pairs(pargs) do
 
if type(k) == 'string' and knownargs[k] == nil then
 
local knownflag = false
 
for _, regexp in ipairs(regexps) do
 
if mw.ustring.match(k, regexp) then
 
knownflag = true
 
break
 
end
 
end
 
if not knownflag and ( not ignoreblank or isnotempty(v) )  then
 
table.insert(values, clean(k))
 
end
 
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
 
local knownflag = false
 
for _, regexp in ipairs(regexps) do
 
if mw.ustring.match(tostring(k), regexp) then
 
knownflag = true
 
break
 
end
 
end
 
if not knownflag and ( showblankpos or isnotempty(v) ) then
 
table.insert(values, k .. ' = ' .. clean(v))
 
end
 
end
 
end
 
 
 
-- add results to the output tables
 
local res = {}
 
if #values > 0 then
 
local unknown_text = args['unknown'] or 'Found _VALUE_, '
 
 
 
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
 
local preview_text = args['preview']
 
if isnotempty(preview_text) then
 
preview_text = require('Module:If preview')._warning({preview_text})
 
elseif preview == nil then
 
preview_text = unknown_text
 
end
 
unknown_text = preview_text
 
end
 
for _, v in pairs(values) do
 
-- Fix odd bug for | = which gets stripped to the empty string and
 
-- breaks category links
 
if v == '' then v = ' ' end
 
 
 
-- avoid error with v = 'example%2' ("invalid capture index")
 
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
 
table.insert(res, r)
 
end
 
end
 
 
 
return table.concat(res)
 
end
 
 
 
function p.check(frame)
 
local args = frame.args
 
local pargs = frame:getParent().args
 
return p._check(args, pargs)
 
end
 
 
 
return p
 

누리위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 누리위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 편집 도움말 (새 창에서 열림)