Module:Footnotes/anchor id list/sandbox: Difference between revisions

Content deleted Content added
note that we're calling sandbox
Tag: Reverted
Restored revision 1291947075 by Hike395 (talk): Nope: wasn't my edits
 
(13 intermediate revisions by 2 users not shown)
Line 2:
local data = mw.loadData ('Module:Footnotes/anchor id list/data');
local whitelist = mw.loadData ('Module:Footnotes/whitelist/sandbox');
local Lang_obj = mw.language.getContentLanguage(); -- used by template_list_addtemplate_name_get() to uppercase first letter of template name TODO: better way to do that?
 
local redirects_date = {
Line 374:
end
 
--[[--------------------------< T E M P L A T E _ LN IA SM TE _ AF DR O M _ M O D U L E >--------------------------------------------
 
if passed a module invocation, return the name of the template represented. Otherwise return the input.
 
{{#invoke:cite|foo|...}} or {{#invoke:cite bar||...}} will return "cite foo" and "cite bar", respectively.
 
]]
 
local function template_list_addtemplate_name_from_module (template, template_listtemplate_name)
if template_name and template_name:match ('^#invoke%s*:') then -- handle directly-invoked citation modules
template_name = template_name:match ('^#invoke%s*:%s*(.+)'); -- get module name
local func_name = template:match ('^{{[^|}]+%|%s*([^/|}]*)'); -- get function name
if template_name and func_name then -- valid module invocation
return template_name:gsub ('%s+$', '') .. ' ' .. func_name; -- ensure exactly one trailing whitespace between module and function name
end;
return nil -- could not get module and function name
end;
return template_name
end
 
--[[--------------------------< T E M P L A T E _ N A M E _ G E T >--------------------------------------------
Line 387 ⟶ 406:
local template_name = template:match ('^{{%s*([^/|}]+)'); -- get template name; ignore subpages ~/new, ~/sandbox; parser functions
 
template_name = template_name_from_module (template, template_name); -- if passed a module invocation, return the name of the template represented
if not template_name or template_name:match ('^#') then -- parser functions, magic words don't count as templates
return nil; -- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this;
Line 688 ⟶ 709:
list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list
end
end
end
 
 
--[[--------------------------< T E M P L A T E _ L I S T _ A D D >--------------------------------------------
 
makes a list of templates use in the article.
 
]]
 
local function template_list_add (template, template_list)
local template = template:match ('{{%s*(.-)[|}]'); -- keep the case of the template - this is different from template_name_get()
if template and not template:match ('^#') then -- found a template or magic word; ignore magic words
template=mw.text.trim (template); -- trim whitespace
template = Lang_obj:ucfirst (template); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?
list_add (template, template_list); -- add to list with (unused) tally
end
end
Line 745 ⟶ 750:
break; -- template is nil for some reason (last template missing closing }} for example) so declare ourselves done
end
 
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
template_list_addlist_add (templatetemplate_name, template_list); -- add this template's name to the list
 
if data.known_templates_cs12 [template_name] then
Line 814 ⟶ 818:
 
elseif template_name and whitelist.wrapper_templates[template_name] then
mw.log(template_name..' is a wrapper')
anchor_id = anchor_id_make_wrapper (template); -- extract an anchor id from this template if possible
list_add (anchor_id, anchor_id_list, true);
Line 866 ⟶ 869:
--[[--------------------------< E X P O R T E D _ T A B L E S >------------------------------------------------
]]
 
mw.log('Calling sandbox anchor_id_list')
 
-- First create global_anchor_id_list, global_template_list, global_article_whitelist
Line 874 ⟶ 875:
-- Then stuff them (and derived tables) into return table
return {
anchor_id_list = global_anchor_id_list or {}, -- table of anchor ids available in this article
article_whitelist = global_article_whitelist or {}, -- table of anchor ids with false-positive error message to be suppressed
template_list = global_template_list or {}, -- table of templates used in this article
citeref_patterns = citeref_patterns_make() or {} , -- table of Lua patterns to search for citeref from wrappers
}