<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://the.satanic.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ACsdcheck</id>
	<title>Module:Csdcheck - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://the.satanic.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ACsdcheck"/>
	<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:Csdcheck&amp;action=history"/>
	<updated>2026-04-20T03:53:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://the.satanic.wiki/index.php?title=Module:Csdcheck&amp;diff=12459&amp;oldid=prev</id>
		<title>imported&gt;Amorymeltzer: T3 removed, see Special:Permalink/995219664#RFC: should WP:T3 be deprecated?</title>
		<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:Csdcheck&amp;diff=12459&amp;oldid=prev"/>
		<updated>2020-12-19T21:59:24Z</updated>

		<summary type="html">&lt;p&gt;T3 removed, see &lt;a href=&quot;/index.php/Special:PermanentLink/995219664#RFC:_should_WP:T3_be_deprecated?&quot; title=&quot;Special:PermanentLink/995219664&quot;&gt;Special:Permalink/995219664#RFC: should WP:T3 be deprecated?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- This module checks whether any of a given set of input criteria are valid CSD criteria.&lt;br /&gt;
-- It is also possible to specify pre-defined or custom sets of CSD criteria to check against.&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function critMatch(s,test_values) -- returns true if s matches one of the table of test_values&lt;br /&gt;
    if type(test_values) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        for n,value in ipairs(test_values) do&lt;br /&gt;
           if s == value then&lt;br /&gt;
               return true&lt;br /&gt;
           end&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        error(&amp;quot;the second parameter passed to critMatch() must be a table&amp;quot;,2)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.check(frame) -- the main CSD check function&lt;br /&gt;
&lt;br /&gt;
    -- get arguments&lt;br /&gt;
    local args;&lt;br /&gt;
    if frame == mw.getCurrentFrame() then&lt;br /&gt;
        -- We&amp;#039;re being called via #invoke. If the invoking template passed any args, use&lt;br /&gt;
        -- them. Otherwise, use the args that were passed into the template.&lt;br /&gt;
        args = frame:getParent().args;&lt;br /&gt;
        for k, v in pairs(frame.args) do&lt;br /&gt;
            args = frame.args;&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        -- We&amp;#039;re being called from another module or from the debug console, so assume&lt;br /&gt;
        -- the args are passed in directly.&lt;br /&gt;
        args = frame;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- define variables&lt;br /&gt;
    local input_values = {};&lt;br /&gt;
    local test_criteria = {};&lt;br /&gt;
    local all_criteria = { -- all valid CSD criteria&lt;br /&gt;
        &amp;quot;G1&amp;quot; , &amp;quot;G2&amp;quot; , &amp;quot;G3&amp;quot; , &amp;quot;G4&amp;quot; , &amp;quot;G5&amp;quot; , &amp;quot;G6&amp;quot; , &amp;quot;G7&amp;quot; , &amp;quot;G8&amp;quot; , &amp;quot;G9&amp;quot; , &amp;quot;G10&amp;quot; , &amp;quot;G11&amp;quot; , &amp;quot;G12&amp;quot; , &amp;quot;G13&amp;quot; , &amp;quot;G14&amp;quot; ,&lt;br /&gt;
        &amp;quot;A1&amp;quot; , &amp;quot;A2&amp;quot; , &amp;quot;A3&amp;quot; , &amp;quot;A5&amp;quot; , &amp;quot;A7&amp;quot; , &amp;quot;A9&amp;quot; , &amp;quot;A10&amp;quot; , &amp;quot;A11&amp;quot;,&lt;br /&gt;
        &amp;quot;F1&amp;quot; , &amp;quot;F2&amp;quot; , &amp;quot;F3&amp;quot; , &amp;quot;F4&amp;quot; , &amp;quot;F5&amp;quot; , &amp;quot;F6&amp;quot; , &amp;quot;F7&amp;quot; , &amp;quot;F8&amp;quot; , &amp;quot;F9&amp;quot; , &amp;quot;F10&amp;quot; , &amp;quot;F11&amp;quot; ,&lt;br /&gt;
        &amp;quot;C1&amp;quot; , &amp;quot;C2&amp;quot; ,&lt;br /&gt;
        &amp;quot;U1&amp;quot; , &amp;quot;U2&amp;quot; , &amp;quot;U3&amp;quot; , &amp;quot;U5&amp;quot; ,&lt;br /&gt;
        &amp;quot;R2&amp;quot; , &amp;quot;R3&amp;quot; , &amp;quot;R4&amp;quot; ,&lt;br /&gt;
        &amp;quot;P1&amp;quot; , &amp;quot;P2&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    local tag_criteria = { -- all CSD criteria used by [[Template:Db-multiple]]&lt;br /&gt;
        &amp;quot;G1&amp;quot; , &amp;quot;G2&amp;quot; , &amp;quot;G3&amp;quot; , &amp;quot;G4&amp;quot; , &amp;quot;G5&amp;quot; , &amp;quot;G6&amp;quot; , &amp;quot;G7&amp;quot; , &amp;quot;G8&amp;quot; , &amp;quot;G10&amp;quot; , &amp;quot;G11&amp;quot; , &amp;quot;G12&amp;quot; , &amp;quot;G13&amp;quot; , &amp;quot;G14&amp;quot; ,&lt;br /&gt;
        &amp;quot;A1&amp;quot; , &amp;quot;A2&amp;quot; , &amp;quot;A3&amp;quot; , &amp;quot;A5&amp;quot; , &amp;quot;A7&amp;quot; , &amp;quot;A9&amp;quot; , &amp;quot;A10&amp;quot; , &amp;quot;A11&amp;quot;,&lt;br /&gt;
        &amp;quot;F1&amp;quot; , &amp;quot;F2&amp;quot; , &amp;quot;F3&amp;quot; , &amp;quot;F7&amp;quot; , &amp;quot;F8&amp;quot; , &amp;quot;F9&amp;quot; , &amp;quot;F10&amp;quot; ,&lt;br /&gt;
        &amp;quot;C1&amp;quot; ,&lt;br /&gt;
        &amp;quot;U1&amp;quot; , &amp;quot;U2&amp;quot; , &amp;quot;U3&amp;quot; , &amp;quot;U5&amp;quot; ,&lt;br /&gt;
        &amp;quot;R2&amp;quot; , &amp;quot;R3&amp;quot; , &amp;quot;R4&amp;quot; ,&lt;br /&gt;
        &amp;quot;P1&amp;quot; , &amp;quot;P2&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    local notice_criteria = { -- all CSD criteria used by [[Template:Db-notice-multiple]]&lt;br /&gt;
        &amp;quot;G1&amp;quot; , &amp;quot;G2&amp;quot; , &amp;quot;G3&amp;quot; , &amp;quot;G4&amp;quot; , &amp;quot;G10&amp;quot; , &amp;quot;G11&amp;quot; , &amp;quot;G12&amp;quot; , &amp;quot;G13&amp;quot; , &amp;quot;G14&amp;quot; ,&lt;br /&gt;
        &amp;quot;A1&amp;quot; , &amp;quot;A2&amp;quot; , &amp;quot;A3&amp;quot; , &amp;quot;A5&amp;quot; , &amp;quot;A7&amp;quot; , &amp;quot;A9&amp;quot; , &amp;quot;A10&amp;quot; , &amp;quot;A11&amp;quot;,&lt;br /&gt;
        &amp;quot;F1&amp;quot; , &amp;quot;F2&amp;quot; , &amp;quot;F3&amp;quot; , &amp;quot;F7&amp;quot; , &amp;quot;F9&amp;quot; , &amp;quot;F10&amp;quot; ,&lt;br /&gt;
        &amp;quot;C1&amp;quot; ,&lt;br /&gt;
        &amp;quot;U3&amp;quot; , &amp;quot;U5&amp;quot; ,&lt;br /&gt;
        &amp;quot;R2&amp;quot; , &amp;quot;R3&amp;quot; , &amp;quot;R4&amp;quot; ,&lt;br /&gt;
        &amp;quot;P1&amp;quot; , &amp;quot;P2&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    -- build tables of input values and test criteria&lt;br /&gt;
    for k,v in pairs(args) do&lt;br /&gt;
        v = mw.ustring.upper(v);&lt;br /&gt;
&lt;br /&gt;
        -- insert positional parameter values into input_values&lt;br /&gt;
        if type(k) == &amp;quot;number&amp;quot; then&lt;br /&gt;
            v = mw.ustring.gsub(v,&amp;quot;^%s*(.-)%s*$&amp;quot;,&amp;quot;%1&amp;quot;); -- strip whitespace from positional parameters&lt;br /&gt;
            table.insert(input_values,v)&lt;br /&gt;
&lt;br /&gt;
        -- insert critn parameter values into test_criteria&lt;br /&gt;
        elseif mw.ustring.match(k,&amp;quot;^crit[1-9]%d*$&amp;quot;) then&lt;br /&gt;
            if critMatch(v,all_criteria) then -- check to make sure the criteria are valid&lt;br /&gt;
                table.insert(test_criteria,v)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- work out which set of CSD criteria to check against&lt;br /&gt;
    local criteria_set = {}&lt;br /&gt;
    if next(test_criteria) then -- if any test criteria are specified, use those regardless of the &amp;quot;set&amp;quot; parameter&lt;br /&gt;
        criteria_set = test_criteria;&lt;br /&gt;
    elseif args[&amp;quot;set&amp;quot;] == &amp;quot;tag&amp;quot; then&lt;br /&gt;
        criteria_set = tag_criteria;&lt;br /&gt;
    elseif args[&amp;quot;set&amp;quot;] == &amp;quot;notice&amp;quot; then&lt;br /&gt;
        criteria_set = notice_criteria;&lt;br /&gt;
    else&lt;br /&gt;
        criteria_set = all_criteria;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- check the input values against the criteria set and output &amp;quot;yes&amp;quot; if there is a match&lt;br /&gt;
    for i,v in ipairs(input_values) do&lt;br /&gt;
        if critMatch(v,criteria_set) then&lt;br /&gt;
            return &amp;quot;yes&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Amorymeltzer</name></author>
	</entry>
</feed>