Module:Citation/CS1/Utilities: Difference between revisions

    From Nonbinary Wiki
    (sync from sandbox;)
    (sync from sandbox;)
    Line 17: Line 17:
    --[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------
    --[[--------------------------< 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
    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 = 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.
    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 futher evaluation the two cases might be merged at a later stage, but should be kept separated for now.
    After further evaluation the two cases might be merged at a later stage, but should be kept separated for now.


    ]]
    ]]
    Line 43: Line 43:
    ]]
    ]]


    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 54: 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 73: 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 84: Line 84:
    ]]
    ]]


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


    Line 92: Line 92:


    Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
    Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
    link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
    link is provided (or link and display are the same), returns a wikilink in the form [[L]]; if neither are
    empty string.
    provided or link is omitted, returns an empty string.


    ]=]
    ]=]


    local function make_wikilink (link, display)
    local function make_wikilink (link, display)
    if is_set (link) then
    if not is_set (link) then return '' end
    if is_set (display) then
     
    return table.concat ({'[[', link, '|', display, ']]'});
    if is_set (display) and link ~= display then
    else
    return table.concat ({'[[', link, '|', display, ']]'});
    return table.concat ({'[[', link, ']]'});
    end
    else
    else
    return '';
    return table.concat ({'[[', link, ']]'});
    end
    end
    end
    end
    Line 123: Line 121:
    local error_state = cfg.error_conditions[error_id];
    local error_state = cfg.error_conditions[error_id];
    prefix = prefix or "";
    prefix = prefix or '';
    suffix = suffix or "";
    suffix = suffix or '';
    if error_state == nil then
    if error_state == nil then
    error( cfg.messages['undefined_error'] .. ': ' .. error_id ); -- because missing error handler in Module:Citation/CS1/Configuration
    error (cfg.messages['undefined_error'] .. ': ' .. error_id); -- because missing error handler in Module:Citation/CS1/Configuration


    elseif is_set (error_state.category) then
    elseif is_set (error_state.category) then
    if error_state.message then -- when error_state.message defined, this is an error message
    if error_state.message then -- when error_state.message defined, this is an error message
    table.insert( z.error_categories, error_state.category );
    table.insert (z.error_categories, error_state.category);
    else
    else
    if not added_maint_cats[error_id] then
    if not added_maint_cats[error_id] then
    Line 141: Line 139:
    end
    end