|
|
| שורה 1: |
שורה 1: |
| -- This is the main module function | | -- This is the main module function |
| function main(frame) | | function main(frame) |
| if mw.title.getCurrentTitle()["namespace"] ~= 0 | | return require('Module:ParamValidator').validateparams(frame) |
| 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
| |
| | |
| if frame.args.options then
| |
| return require('Module:ParamValidator').validateparams(frame)
| |
| end
| |
|
| |
| error("[[קטגוריה:משהו]]")
| |
|
| |
| local tdReader = require( 'Module:ReadTd' )
| |
| local data = tdReader.compat( { template, template .. '/תיעוד' } )
| |
| if not data then
| |
| error( 'Template ' .. templatename .. " can't be verified, 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 and suggestions[k] ~= "" then -- is there a suggestion
| |
| answer = answer .. ', <span style = "color:green">מומלץ ' .. "''" .. suggestions[k] .. "''</span>"
| |
| else needsug = true -- need more suggestions
| |
| 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 then -- no string
| |
| return mw.ustring.len(s)
| |
| end
| |
| return 0
| |
| end | | end |
|
| |
|
| שורה 200: |
שורה 90: |
| return frame:expandTemplate{title = "הערות שוליים", args = newargs} | | return frame:expandTemplate{title = "הערות שוליים", args = newargs} |
| end | | end |
| function checktemplatedata(frame)
| | return {main = require('Module:ParamValidator').validateparams, equal = equal, decode = decode, short = short, biur = biur, |
| end
| | biurim = biurim,} |
| 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}
| |
-- This is the main module function
function main(frame)
return require('Module:ParamValidator').validateparams(frame)
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
return {main = require('Module:ParamValidator').validateparams, equal = equal, decode = decode, short = short, biur = biur,
biurim = biurim,}