Module:Citation/CS1/Utilities: Difference between revisions

    From Nonbinary Wiki
    m>Trappist the monk
    No edit summary
     
    (15 intermediate revisions by 5 users not shown)
    Line 1: Line 1:
    require('Module:No globals');
    --[[
    History of changes since last sync: 2015-12-12
    ]]
    local u = {}


    local z = {
    local z = {
    Line 15: Line 8:
    };
    };


    local cfg;
     
    --[[--------------------------< 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.
     
    After further evaluation the two cases might be merged at a later stage, but should be kept separated for now.
     
    ]]
     
    local function has_accept_as_written (str, allow_empty)
    local count;
    if true == allow_empty then
    str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set
    else
    str, count = str:gsub ('^%(%((.+)%)%)$', '%1');
    end
    return str, 0 ~= count;
    end
     


    --[[--------------------------< I S _ S E T >------------------------------------------------------------------
    --[[--------------------------< I S _ S E T >------------------------------------------------------------------


    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


    ]]
    ]]
    local function is_set( var )
     
    local function is_set (var)
    return not (var == nil or var == '');
    return not (var == nil or var == '');
    end
    end
    Line 34: 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 53: 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 60: 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 >----------------------------------------------------


    Wraps error messages with css markup according to the state of hidden.
    Wraps error messages with CSS markup according to the state of hidden.


    ]]
    ]]
    local function error_comment( content, hidden )
     
    return substitute( hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content );
    local function error_comment (content, hidden)
    return substitute (hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content);
    end
    end




    --[[--------------------------< S E T _ E R R O R >--------------------------------------------------------------
    --[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
     
    Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only