Module:Citation/CS1/Utilities: Difference between revisions

m
(undo brute force hiding of deprecated parameter and missing periodical error messages;)
m (21 revisions imported from templatewiki:Module:Citation/CS1/Utilities)
Line 1: Line 1:
local u = {}


local z = {
local z = {
Line 124: Line 125:
});
});


-- message = table.concat ({message, ' (', substitute (cfg.presentation['wikilink'],
-- {cfg.messages['help page link'] .. '#' .. error_state.anchor, cfg.messages['help page label']}), ')'});
-- message = message .. " ([[" .. cfg.messages['help page link'] ..
-- "#" .. error_state.anchor .. "|" ..
-- cfg.messages['help page label'] .. "]])";
z.error_ids[ error_id ] = true;
z.error_ids[ error_id ] = true;
if in_array( error_id, { 'bare_url_missing_title', 'trans_missing_title' } )
if in_array( error_id, { 'bare_url_missing_title', 'trans_missing_title' } )
Line 334: Line 341:
local wl_type = 2; -- assume that str is a complex wikilink [[L|D]]
local wl_type = 2; -- assume that str is a complex wikilink [[L|D]]


L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]]  
L, D = str:match ('%[%[([^|]+)|([^%]]+)%]%]'); -- get L and D from [[L|D]]  


if not is_set (D) then -- if no separate link
if not is_set (D) then -- if no separate link
D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]]
D = str:match ('%[%[([^%]]*)|*%]%]'); -- get D from [[D]]
wl_type = 1;  
wl_type = 1;  
end
end
Line 350: Line 357:
return wl_type, D, L or '';
return wl_type, D, L or '';
end
--[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >--------------------------------
Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata.
This function strips common patterns of apostrophe markup.  We presume that editors who have taken the time to
markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind.
Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag
to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was
removed; returns the argument and nil when no markup removed
]]
local function strip_apostrophe_markup (argument)
if not is_set (argument) then
return argument, nil; -- no argument, nothing to do
end
if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe?  If not, exit.
return argument, nil;
end
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;
end
end
return argument, flag; -- done
end
end


Line 405: Line 372:




--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]


return {
return { -- return exported functions and tables
is_set = is_set, -- exported functions
is_set = is_set,
in_array = in_array,
in_array = in_array,
substitute = substitute,
substitute = substitute,
Line 422: Line 387:
make_wikilink = make_wikilink,
make_wikilink = make_wikilink,
set_selected_modules = set_selected_modules,
set_selected_modules = set_selected_modules,
strip_apostrophe_markup = strip_apostrophe_markup,
z = z,
z = z, -- exported table
}
}