ماڈیول:Csdcheck
دستاویز [تخلیق]
شاید آپ اس اسکریبنٹو ماڈیول کا دستاویزی صفحہ تخلیق کرنا چاہتے ہیں۔ صارفین ماڈیول کے تختہ مشق (تخلیق | آئینہ) اور ثابتات (تخلیق) میں تجربات کرسکتے ہیں۔ براہ کرم /دستاویز کے ذیلی صفحہ پر زمرہ جات شامل فرمائیں۔ اس ماڈیول کے ذیلی صفحات۔ |
--
-- This module checks whether any of a given set of input criteria are valid CSD criteria.
-- It is also possible to specify pre-defined or custom sets of CSD criteria to check against.
--
local p = {}
function critMatch(s,test_values) -- returns true if s matches one of the table of test_values
if type(test_values) == "table" then
for n, value in ipairs(test_values) do
if s == value then
return true
end
end
else
error("critMatch() کو جانے والے دوسرے پیرامیٹر کا جدول ہونا لازمی ہے" ,2)
end
end
function p.check(frame) -- the main CSD check function
-- get arguments
local args;
if frame == mw.getCurrentFrame() then
-- We're being called via #invoke. If the invoking template passed any args, use
-- them. Otherwise, use the args that were passed into the template.
args = frame:getParent().args;
for k, v in pairs(frame.args) do
args = frame.args;
break
end
else
-- We're being called from another module or from the debug console, so assume
-- the args are passed in directly.
args = frame;
end
-- define variables
local input_values = {};
local test_criteria = {};
local all_criteria = { -- all valid CSD criteria
"ع1" , "ع2" , "ع3" , "ع4" , "ع5" , "ع6" , "ع7" , "ع8" , "ع9" , "ع10" , "ع11" , "ع12" , "ع13" , "ع14" ,
"م1" , "م2" , "م3" , "م5" , "م7" , "م9" , "م10" , "م11",
"ف1" , "ف2" , "ف3" , "ف4" , "ف5" , "ف6" , "ف7" , "ف8" , "ف9" , "ف10" , "ف11" ,
"ز1" , "ز2", "ز3" ,
"ص1", "ص2", "ص5" ,
"ر1" , "ر2" , "ر3" ,
"ب1" , "ب2"
};
local tag_criteria = { -- all CSD criteria used by [[Template:Db-multiple]]
"ع1" , "ع2" , "ع3" , "ع4" , "ع5" , "ع6" , "ع7" , "ع8" , "ع10" , "ع11" , "ع12" , "ع13" , "ع14" ,
"م1" , "م2" , "م3" , "م5" , "م7" , "م9" , "م10" , "م11",
"ف1" , "ف2" , "ف3" , "ف7" , "ف8" , "ف9" , "ف10" ,
"ز1" ,
"ص1" , "ص2" , "ص3" , "ص5" ,
"ز2" , "ز3" , "ز4" ,
"ب1" , "ب2"
};
local notice_criteria = { -- all CSD criteria used by [[Template:Db-notice-multiple]]
"ع1" , "ع2" , "ع3" , "ع4" , "ع10" , "ع11" , "ع12" , "ع13" , "ع14" ,
"م1" , "م2" , "م3" , "م5" , "م7" , "م9" , "م10" , "م11",
"ف1" , "ف2" , "ف3" , "ف7" , "ف9" , "ف10" ,
"ز1" ,
"ص3" , "ص5" ,
"ر2" , "ر3" , "ر4" ,
"ب1" , "ب2"
};
-- build tables of input values and test criteria
for k, v in pairs(args) do
v = mw.ustring.upper(v);
-- insert positional parameter values into input_values
if type(k) == "number" then
v = mw.ustring.gsub(v, "^%s*(.-)%s*$", "%1"); -- strip whitespace from positional parameters
table.insert(input_values, v)
-- insert critn parameter values into test_criteria
elseif mw.ustring.match(k, "^crit[1-9]%d*$") then
if critMatch(v, all_criteria) then -- check to make sure the criteria are valid
table.insert(test_criteria, v)
end
end
end
-- work out which set of CSD criteria to check against
local criteria_set = {}
if next(test_criteria) then -- if any test criteria are specified, use those regardless of the "set" parameter
criteria_set = test_criteria;
elseif args["set"] == "tag" then
criteria_set = tag_criteria;
elseif args["set"] == "notice" then
criteria_set = notice_criteria;
else
criteria_set = all_criteria;
end
-- check the input values against the criteria set and output "yes" if there is a match
for i, v in ipairs(input_values) do
if critMatch(v, criteria_set) then
return "yes"
end
end
end
return p