Module:Citation/CS1/Utilities: Difference between revisions

    From Nonbinary Wiki
    m>Trappist the monk
    No edit summary
     
    (22 intermediate revisions by 5 users not shown)
    Line 1: Line 1:
    local u = {}


    local z = {
    local z = {
    error_categories = {}; -- for categorizing citations that contain errors
    error_categories = {}; -- for categorizing citations that contain errors
    error_ids = {};
    error_ids = {};
    message_tail = {};
    message_tail = {};
    maintenance_cats = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work
    maintenance_cats = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work
    properties_cats = {}; -- for categorizing citations based on certain properties, language of source for instance
    properties_cats = {}; -- for categorizing citations based on certain properties, language of source for instance
    };
    };


    local cfg = mw.loadData ('Module:Citation/CS1/Configuration/sandbox');


    --[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------
    --[[--------------------------< F O R W A R D   D E C L A R A T I O N S >--------------------------------------
    ]]
     
    local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
     
     
    --[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------
     
    When <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else
     
    with allow_empty = false, <str> must have at least one character inside the markup
    with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context.


    Adds a category to z.maintenance_cats using names from the configuration file with additional text if any.
    After further evaluation the two cases might be merged at a later stage, but should be kept separated for now.
    To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maintenance_cats.


    ]]
    ]]


    local added_maint_cats = {} -- list of maintenance categories that have been added to z.maintenance_cats
    local function has_accept_as_written (str, allow_empty)
    local function add_maint_cat (key, arguments)
    local count;
    if not added_maint_cats [key] then
    if true == allow_empty then
    added_maint_cats [key] = true; -- note that we've added this category
    str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set
    table.insert( z.maintenance_cats, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table
    else
    str, count = str:gsub ('^%(%((.+)%)%)$', '%1');
    end
    end
    return str, 0 ~= count;
    end
    end


    Line 30: Line 40:


    Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
    Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
    This function is global because it is called from both this module and from Date validation


    ]]
    ]]
    function is_set( var )
     
    local function is_set (var)
    return not (var == nil or var == '');
    return not (var == nil or var == '');
    end
    end
    Line 44: Line 54:
    ]]
    ]]


    local function in_array( needle, haystack )
    local function in_array (needle, haystack)
    if needle == nil then
    if needle == nil then
    return false;
    return false;
    end
    end
    for n,v in ipairs( haystack ) do
    for n, v in ipairs (haystack) do
    if v == needle then
    if v == needle then
    return n;
    return n;
    Line 63: Line 73:
    ]]
    ]]


    local function substitute( msg, args )
    local function substitute (msg, args)
    return args and mw.message.newRawMessage( msg, args ):plain() or msg;
    return args and mw.message.newRawMessage (msg, args):plain() or msg;
    end
    end


    Line 70: Line 80:
    --[[--------------------------< E R R O R _ C O M M E N T >----------------------------------------------------
    --[[--------------------------< E R R O R _ C O M M E N T >----------------------------------------------------