Module:Citation/CS1/Utilities: Difference between revisions
m
1 revision imported: Import templates from Wikipedia: Citation, Cite book, Cite journal, Cite news, Cite patent, Cite thesis, Cite web
(synch from sandbox;) |
Psephomancy (talk | contribs) m (1 revision imported: Import templates from Wikipedia: Citation, Cite book, Cite journal, Cite news, Cite patent, Cite thesis, Cite web) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1:
local u = {}▼
local z = {
Line 125 ⟶ 124:
});
z.error_ids[ error_id ] = true;
if in_array( error_id, { 'bare_url_missing_title', 'trans_missing_title' } )
Line 341 ⟶ 334:
local wl_type = 2; -- assume that str is a complex wikilink [[L|D]]
return 0, str, ''; -- not a wililink; return wl_type as 0, str as D, and empty string as L
end▼
L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]]
if not is_set (D) then -- if no separate
D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]]
wl_type = 1;
▲ end
D = str; -- return the string as D▼
end
D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters
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
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
Line 372 ⟶ 403:
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
is_set = is_set, -- exported functions
in_array = in_array,
substitute = substitute,
Line 387 ⟶ 420:
make_wikilink = make_wikilink,
set_selected_modules = set_selected_modules,
strip_apostrophe_markup = strip_apostrophe_markup,
}
|