Moduli:Citation/CS1/Utilities: Dallime mes rishikimesh

Content deleted Content added
Zhbëje versionin 22596 i bërë nga Klein Muçi (ligjëratë)
Etiketa: Undo
No edit summary
Rreshti 17:
--[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------
 
whenWhen <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 futherfurther evaluation the two cases might be merged at a later stage, but should be kept separated for now.
 
]]
Rreshti 43:
]]
 
local function is_set ( var )
return not (var == nil or var == '');
end
Rreshti 54:
]]
 
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n, v in ipairs( (haystack ) do
if v == needle then
return n;
Rreshti 73:
]]
 
local function substitute ( msg, args )
return args and mw.message.newRawMessage ( msg, args ):plain() or msg;
end
 
Rreshti 84:
]]
 
local function error_comment ( content, hidden )
return substitute( (hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content );
end
 
Rreshti 92:
 
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.
empty string.
 
]=]
 
local function make_wikilink (link, display)
if not is_set (link) then return '' end
 
if is_set (display) then
return if table.concatis_set ({'[[',display) and link, '|',~= display, ']]'});then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return table.concat ({'[[', link, ']]'});
end
end
Line 123 ⟶ 121:
local error_state = cfg.error_conditions[error_id];
prefix = prefix or ""'';
suffix = suffix or ""'';
if error_state == nil then
error( (cfg.messages['undefined_error'] .. ': ' .. error_id ); -- because missing error handler in Module:Citation/CS1/Configuration
 
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
Line 141 ⟶ 139:
end
 
local message = substitute ( error_state.message, arguments );
 
message = table.concat (
Line 164 ⟶ 162:
end
message = table.concat ({ prefix, message, suffix });
 
if raw == true then
Line 201 ⟶ 199:
end
 
if is_set (args[alias]) then -- alias is in the template's argument list
if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases
local skip;
for _, v in ipairs (error_list) do -- spin through the error list to see if we've added this alias
if v == alias then
skip = true;
Line 211 ⟶ 209:
end
if not skip then -- has not been added so
table.insert ( error_list, alias ); -- add error alias to the error list
end
else
Line 232 ⟶ 230:
if not added_maint_cats [key] then
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
end
end
Line 254 ⟶ 252:
added_prop_cats [key] = true; -- note that we've added this category
key = key:gsub ('(foreign_lang_source_?2?)%a%a%a?[%a%-]*', '%1'); -- strip lang code from keyname
table.insert( (z.properties_cats, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table
end
end
Line 269 ⟶ 267:
]]
 
local function safe_for_italics ( str )
if not is_set (str) then return str end
 
return str;
if str:sub (-1,- 1) == "'" then str = str .. "<span></span>" .. str; end
else
if str:sub (-1, -1) == "'" then str = str .. "<span></span>" .. str; end
if str:sub(-1,-1) == "'" then str = str .. "<span></span>"; end
-- Remove newlines as they break italics.
return str:gsub ( '\n', ' ' );
-- Remove newlines as they break italics.
 
return str:gsub( '\n', ' ' );
end
end
 
Line 291 ⟶ 288:
 
local function wrap_style (key, str)
if not is_set ( str ) then
return "";
elseif in_array( (key, { 'italic-title', 'trans-italic-title' } ) then
str = safe_for_italics ( str );
end
 
return substitute ( cfg.presentation[key], {str} );
end
 
Line 325 ⟶ 322:
list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item
elseif 2 < count then
list = table.concat (list_seq, sep_list, 1, count - 1); -- concatenate all but last item with plain list separator
list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator
end
Line 353 ⟶ 350:
if index ~= nil then index = tostring(index); end
 
for _, alias in ipairs ( aliases_list ) do -- for each alias in the aliases list
if alias:match ('#') then -- if this alias can be enumerated
if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases
Line 360 ⟶ 357:
value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias
else
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- test for non-enumerated alias
end
end
Line 389 ⟶ 386:
 
local function remove_wiki_link (str)
return (str:gsub( ("%[%[([^%[%]]*)%]%]", function(l)
return l:gsub( ("^[^|]*|(.*)$", "%1" ):gsub ("^%s*(.-)%s*$", "%1");
end));
end
Line 453 ⟶ 450:
local flag;
while true do
if argument:find ( "'''''", 1, true ) then -- bold italic (5)
argument, flag = argument:gsub ("%'%'%'%'%'", ""); -- remove all instances of it
elseif argument:find ( "''''", 1, true ) then -- italic start and end without content (4)
argument, flag=argument:gsub ("%'%'%'%'", "");
elseif argument:find ( "'''", 1, true ) then -- bold (3)
argument, flag=argument:gsub ("%'%'%'", "");
elseif argument:find ( "''", 1, true ) then -- italic (2)
argument, flag = argument:gsub ("%'%'", "");
else
break;