Module:Check for unknown parameters and Template:Documentation subpage: Difference between pages

From Frontierpedia, the Microsoft Agent encyclopedia
(Difference between pages)
en>Frietjes
No edit summary
 
en>MZMcBride
(partial rv, ambox shouldn't be used for templates that are for non-articles)
 
Line 1: Line 1:
-- This module may be used to compare the arguments passed to the parent
<div class="messagebox" id="template_doc_page_viewed_directly" style="text-align: center">
-- with a list of arguments, returning a specified result if an argument is
This is the [[Wikipedia:Template documentation|documentation]] page {{{1|for [[{{NAMESPACE}}:{{BASEPAGENAME}}]].}}} <div style="font-size: 90%">When it is viewed directly, links using [[Help:Variable|variables]] may appear broken; do not replace these with [[hard coding|hardcoded]] page names or URLs.</div>
-- not on the list
</div><includeonly>{{#if: {{{inhib|{{{inhibit|}}}}}} |<!-- skip -->|[[Category:Template documentation|{{PAGENAME}}]]}}</includeonly><noinclude>
local p = {}
{{pp-semi-protected|small=yes}}
 
{{template doc}}
local function trim(s)
<!-- Add categories and interwikis to the /doc subpage, not here! -->
return s:match('^%s*(.-)%s*$')
</noinclude>
end
 
local function isnotempty(s)
return s and trim(s) ~= ''
end
 
function p.check (frame)
local args = frame.args
local pargs = frame:getParent().args
local ignoreblank = isnotempty(frame.args['ignoreblank'])
local checkpos = isnotempty(frame.args['checkpositional'])
local knownargs = {}
local unknown = frame.args['unknown'] or 'Found _VALUE_, '
local preview = frame.args['preview'] or unknown
 
local res = {}
local regexps = {}
local comments = {}
local commentstr = ''
local ispreview = frame:preprocess( "{{REVISIONID}}" ) == "" and 1 or 0
 
-- create the list of known args, regular expressions, and the return string
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
if isnotempty(frame.args['preview']) then
preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. frame.args['preview'] .. ' (this message is shown only in preview).</div>'
elseif frame.args['preview'] then
preview = frame.args['preview']
else
preview = unknown
end
if ispreview == 1 then unknown = preview end
-- adds one result to the output tables
local function addresult(k)
if k == '' then
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
k = ' '
end
local r = unknown:gsub('_VALUE_', k)
table.insert(res, r)
table.insert(comments, '"' .. k .. '"')
end
 
-- loop over the parent args, and make sure they are on the list
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for i, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if (not knownflag) and ispreview or ( (not ignoreblank) and (not isnotempty(v)) )  then
k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
addresult(k)
end
elseif checkpos and
type(k) == 'number' and
knownargs[tostring(k)] == nil and
( not ignoreblank or isnotempty(v) )
then
addresult(k)
end
end
 
if #comments > 0 then
commentstr = '<!-- Module:Check for unknown parameters results: ' ..
table.concat(comments, ', ') .. '-->'
end
return table.concat(res) .. commentstr
end
 
return p

Revision as of 20:44, 15 September 2007

This is the documentation page for Template:Documentation subpage.
When it is viewed directly, links using variables may appear broken; do not replace these with hardcoded page names or URLs.

Template:Pp-semi-protected Template:Template doc