Module:Citation/CS1/Utilities: Difference between revisions
(sync from sandbox;) |
m (7 revisions imported from wikipedia:Module:Citation/CS1/Utilities: see Topic:Vtixlm0q28eo6jtf) |
||
| (6 intermediate revisions by 2 users not shown) | |||
| Line 13: | Line 13: | ||
local cfg; -- table of tables imported from selected 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 21: | 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 32: | 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 51: | 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 58: | 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 | Wraps error messages with CSS markup according to the state of hidden. | ||
]] | ]] | ||
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 69: | Line 91: | ||
--[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- | --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- | ||
Makes a wikilink; when | 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) and link ~= display then | |||
return table.concat ({'[[', link, '|', display, ']]'}); | |||
else | else | ||
return ''; | return table.concat ({'[[', link, ']]'}); | ||
end | |||