יחידה:פרמטרים: הבדלים בין גרסאות בדף
מראה
חופים הם לפעמים געגועים לנחל. ראיתי פעם חוף שנחל עזבו עם לב שבור של חול ואבן. והאדם, והאדם הוא לפעמים גם כן יכול להישאר נטוש ובלי כוחות ממש |
מ שוחזר מעריכות של 5.22.131.35 (שיחה) לעריכה האחרונה של Hayden Von Feldheim |
||
| שורה 12: | שורה 12: | ||
local template = pframe:getTitle() -- template full name | local template = pframe:getTitle() -- template full name | ||
templatename = template -- template name to remove namespace | templatename = template -- template name to remove namespace | ||
if find1(templatename, namespace) == | if find1(templatename, namespace) == 1 --remove namespace from template name | ||
then templatename = mw.ustring.sub(templatename, len1(namespace) + 1) end | then templatename = mw.ustring.sub(templatename, len1(namespace) + 1) end | ||
גרסה מ־13:59, 24 במרץ 2016
kipod = {"אלבום", "תותח", "סטטיסטיקה עירונית", "סינגל", "טבלת אירוויזיון", "חומצת אמינו"}
-- This is the main module function
function main(frame)
if mw.title.getCurrentTitle()["namespace"] ~= 0
then return "" end
ans = "" -- answer to be printed
namespace = "תבנית:" -- template namespace
pframe = frame:getParent() -- Article frame
errors = 0 -- errors counter
local template = pframe:getTitle() -- template full name
templatename = template -- template name to remove namespace
if find1(templatename, namespace) == 1 --remove namespace from template name
then templatename = mw.ustring.sub(templatename, len1(namespace) + 1) end
for p, pp in pairs(kipod) do
if pp == templatename then
local modulevalid = require('Module:ParamValidator')
return modulevalid.validateparams(frame)
end
end
local data
local subpageName = 'יחידה:פרמטרים/' .. templatename
local tdReader = require( 'Module:ReadTd' )
data = tdReader.compat( template )
if not data and mw.title.makeTitle( 0, subpageName ).exists then
data = mw.loadData(subpageName) -- read template variables data
end
if not data then
error( 'Template ' .. templatename .. " can't be verified, no subpage and no templatedata" )
end
if frame.args[1] then
table.insert(data[2], frame.args[1])
end
local numbered = 0 -- real nonnamed parameters counter
local parnum = 0 -- template data parameters counter
local mustnum = data[1] -- template data maximum unnamed parameters number
parameters = data[2] -- template data parameters list
must = data[3] -- template data must parameters list
local suggestionslist = require( 'Module:פרמטרים/הצעות' )
suggestions = suggestionslist[templatename] -- template data suggestions table
for tt, t in pairs(must) do -- check all must parameters indeed here
checkmust(t) end
for k, v in pairs(pframe.args) do -- for each real parameter
if type(k) == "string" -- if named
then checknamed(k) -- check it
elseif not isempty(v) -- if unnamed and not empty
then numbered = k end end -- remember last such parameter number
if mustnum < numbered -- too many unnamed parameters
then out("צריך מקסימום " .. mustnum .. " פרמטרים ללא שם, ישנם " .. numbered .. ', והם:')
errors = errors + 1 -- an error
for k, v in pairs(pframe.args) do -- print all unnamed parameters
if type(k) ~= "string" then
if not isempty(v)
then out("''" .. k .. "'': " .. '<span style="color:green">"</span>' .. v
.. '<span style="color:green">"</span>')
else out("''" .. k .. "'' ריק") end end end end
if ans == "" -- no problems
then return ans end
if errors > 1 -- plural
then errors = "ו"
else errors = "" end
return '<div class="error parameters"><small>' .. " '''שגיא" .. errors .. "ת פרמטרים ב[["
.. template .. "]]:<br/>" .. ans .. "'''</td></tr></table></small></div>" -- answer
.. "[[קטגוריה:שגיאות פרמטריות]][[קטגוריה:שגיאות פרמטריות בתבנית " .. templatename .. "]]"
end
-- This function checks each template data must parameter
function checkmust(must)
for g, h in pairs(pframe.args) do -- for each real parameters
if must == g .. "" -- found
then if isempty(h) -- but empty
then out("פרמטר חובה ריק: ''" .. g .. "''")
errors = errors + 1 end
return end end
out("פרמטר חובה חסר: ''" .. must .. "''") -- not found
errors = errors + 1
end
-- This function checks each named real parameter
function checknamed(k)
local answer = "פרמטר לא ידוע: ''" .. k .. "''" -- answer if will be needed
for p1, p in pairs(parameters) do -- for each template data parameter
if p == k -- match
then return end end
errors = errors + 1
if suggestions == nil or suggestions[k] == nil or suggestions[k] == "" -- is there a suggestion
then needsug = true -- if no, need more suggestions
else answer = answer .. ', <span style = "color:green">מומלץ ' .. "''" .. suggestions[k] .. "''</span>" end
out(answer) -- output
end
-- This procedure checks is the argument is nothing then whitespace
function isempty(v)
for i = 1, len1(v) do -- each character
if mw.ustring.byte(v, i, i) > 32 -- real text
then return false end end
return true -- indeed empty
end
-- This function add a line to the output
function out(new)
ans = ans .. new .. "</br>"
end
-- This functions finds substring in string
function find1(str, what, where)
return mw.ustring.find(str, what, where, true) or 0
end
-- This function calculates string length
function len1(s)
if s == nil -- no string
then return 0 end
return mw.ustring.len(s)
end
function sub1(str, from, to)
return mw.ustring.sub(str, from, to)
end
function equal(frame)
local pframe = frame:getParent()
type = sub1(pframe:getTitle(), 7)
oldargs = pframe.args
local newargs = {}
local kinds = frame.args
local stop
for p, pp in pairs(oldargs) do
stop = false
if tostring(p) == tostring(kinds[1]) and newargs[p] == nil
then newargs[p] = pp
stop = true
elseif tostring(p) == tostring(kinds[1])
then equalerror("תוכן כפול: " .. newargs[p] .. " וגם " .. pp)
stop = true
else for z, zz in ipairs(kinds) do
if tostring(p) == tostring(zz)
then newargs[p] = pp
stop = true
do break end end
end end
if not stop
then local kind = newargs[kinds[1]] or newargs[tonumber(kinds[1])]
if kind ~= nil
then equalerror("תוכן כפול: " .. kind .. " וגם " .. p .. "=" .. pp)
else newargs[kinds[1]] = p .. "=" .. pp end end
end
return frame:expandTemplate({title = frame.args["קוד"], args = newargs})
end
function short(frame)
local pframe = frame:getParent()
type = sub1(pframe:getTitle(), 7)
local found
for p, pp in pairs(pframe.args) do
found = false
for z, zz in ipairs(frame.args) do
if tostring(p) == tostring(zz)
then found = true
end
end
if not found and not (p == 1 and pp == "")
then equalerror("פרמטר לא ידוע: " .. p .. " = '" .. pp .. "'")
end
end
end
function equalerror(message)
error("[[קטגוריה:שגיאות קריאה לתבנית " .. type .. "]] (בקריאה ל[[תבנית:" .. type .. "]]) " .. message, 0)
end
function decode(frame)
return mw.uri.decode(frame.args[1])
end
function biur(frame)
pframe = frame:getParent()
local newargs = {}
for a, aa in pairs(pframe.args) do
if a == "קבוצה" then
error('פרמטר "קבוצה" כפול[[category:' ..
tostring(mw.message.new("Cite-tracking-category-cite-error")) .. ']]', 0)
end
newargs[a] = aa
end
newargs["קבוצה"] = frame.args[1] or "hebrew"
return frame:expandTemplate{title = "הערה", args = newargs}
end
function biurim(frame)
pframe = frame:getParent()
local newargs = {}
for a, aa in pairs(pframe.args) do
if a == "קבוצה" then
error('פרמטר "קבוצה" כפול[[category:' ..
tostring(mw.message.new("Cite-tracking-category-cite-error")) .. ']]', 0)
end
newargs[a] = aa
end
newargs["קבוצה"] = frame.args[1] or "hebrew"
return frame:expandTemplate{title = "הערות שוליים", args = newargs}
end
function checktemplatedata(frame)
end
function test(frame)
return mw.language.fetchLanguageName( "no", "he" )
end
return {main = main, equal = equal, decode = decode, short = short, biur = biur, biurim = biurim,
checktemplatedata = checktemplatedata, test = test}