Module:Citation/CS1/Utilities: Difference between revisions

    From Nonbinary Wiki
    m>Redrose64
    (this kind of markup is no longer allowed, and puts pages in Category:Pages using invalid self-closed HTML tags)
     
    (10 intermediate revisions by 4 users not shown)
    Line 1: Line 1:
    local u = {}


    local z = {
    local z = {
    Line 13: Line 12:
    ]]
    ]]


    local cfg; -- table of tables imported from slected Module:Citation/CS1/Configuration
    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




    Line 19: 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


    ]]
    ]]
    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 33: 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 52: 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 59: 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
     
     
    --[=[-------------------------< 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
    link is provided (or link and display are the same), returns a wikilink in the form [[L]]; if neither are
    provided or link is omitted, returns an empty string.
     
    ]=]
     
    local function make_wikilink (link, display)
    if not is_set (link) then return '' end
     
    if is_set (display) and link ~= display then
    return table.concat ({'[[', link, '|', display, ']]'});