Module:Citation/CS1/Utilities: Difference between revisions
sync from sandbox;
(sync from sandbox;) |
(sync from sandbox;) |
||
| 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 futher 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 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. | ||
]] | ]] | ||
| 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, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an | ||
empty string. | empty string. | ||
| Line 88: | Line 110: | ||
--[[--------------------------< S E T _ E | --[[--------------------------< S E T _ M E S S A G E >---------------------------------------------------------- | ||
Sets an error condition and returns the appropriate error message. The actual placement of the error message in the output is | Sets an error condition and returns the appropriate error message. The actual placement of the error message in the output is | ||
the responsibility of the calling function. | the responsibility of the calling function. | ||
TODO: change z.error_categories and z.maintenance_cats to have the form cat_name = true; to avoid dups without having to have an extra cat | |||
]] | ]] | ||
local added_maint_cats = {} -- list of maintenance categories that have been added to z.maintenance_cats; TODO: figure out how to delete this table | |||
local function | local function set_message (error_id, arguments, raw, prefix, suffix) | ||
local error_state = cfg.error_conditions[ error_id ]; | local error_state = cfg.error_conditions[error_id]; | ||
prefix = prefix or ""; | prefix = prefix or ""; | ||
| Line 102: | Line 127: | ||
if error_state == nil then | if error_state == nil then | ||
error( cfg.messages['undefined_error'] ); | error( cfg.messages['undefined_error'] .. ': ' .. error_id ); -- because missing error handler in Module:Citation/CS1/Configuration | ||
elseif is_set( error_state.category ) then | |||
table.insert( z.error_categories, error_state.category ); | elseif is_set (error_state.category) then | ||
if error_state.message then -- when error_state.message defined, this is an error message | |||
table.insert( z.error_categories, error_state.category ); | |||
else | |||
if not added_maint_cats[error_id] then | |||
added_maint_cats[error_id] = true; -- note that we've added this category | |||
table.insert (z.maintenance_cats, substitute (error_state.category, arguments)); -- make cat name then add to table | |||
end | |||
return; -- because no message, nothing more to do | |||
end | |||
end | end | ||
local message = substitute( error_state.message, arguments ); | local message = substitute( error_state.message, arguments ); | ||
| Line 124: | Line 158: | ||
}); | }); | ||
z.error_ids[ error_id ] = true; | z.error_ids[error_id] = true; | ||
if in_array( error_id, { ' | if z.error_ids['err_citation_missing_title'] and -- if missing-title error already noted | ||
in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these | |||
return '', false; -- don't bother because one flavor of missing title is sufficient | |||
end | end | ||
message = table.concat({ prefix, message, suffix }); | message = table.concat ({ prefix, message, suffix }); | ||
if raw == true then | if raw == true then | ||
return message, error_state.hidden; | return message, error_state.hidden; | ||
end | end | ||
return error_comment( message, error_state.hidden ); | return error_comment (message, error_state.hidden); | ||
end | end | ||
| Line 149: | Line 183: | ||
alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration | alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration | ||
index – for enumerated parameters, identifies which one | index – for enumerated parameters, identifies which one | ||
enumerated – true/false flag used choose how enumerated aliases are examined | enumerated – true/false flag used to choose how enumerated aliases are examined | ||
value – value associated with an alias that has previously been selected; nil if not yet selected | value – value associated with an alias that has previously been selected; nil if not yet selected | ||
selected – the alias that has previously been selected; nil if not yet selected | selected – the alias that has previously been selected; nil if not yet selected | ||
| Line 195: | Line 229: | ||
]] | ]] | ||
local function add_maint_cat (key, arguments) | local function add_maint_cat (key, arguments) | ||
if not added_maint_cats [key] then | if not added_maint_cats [key] then | ||
added_maint_cats [key] = true; -- note that we've added this category | added_maint_cats [key] = true; -- note that we've added this category | ||
table.insert( z.maintenance_cats, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table | table.insert( z.maintenance_cats, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table | ||
end | |||
end | |||
--[[--------------------------< A D D _ P R O P _ C A T >-------------------------------------------------------- | |||
Adds a category to z.properties_cats using names from the configuration file with additional text if any. | |||