Module:Sandbox/Ahecht/cite
require ('strict');
local cfg = mw.loadData ('Module:Cite/config/sandbox'); -- Sandbox includes aliases with alternative capitalization (e.g. arXiv)
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Substitutes $1, $2, etc in <message> with data from <data_t>. Returns plain-text substituted string when
<data_t> not nil; returns <message> else.
TODO: this function goes away if positinal parameter use goes away
]]
local function substitute (message, data_t)
return data_t and mw.message.newRawMessage (message, data_t):plain() or message;
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
Assembles an error message from module name, message text, help link, and error category.
TODO: this function goes away if positinal parameter use goes away
]]
local function make_error_msg (frame, msg, nocat)
local module_name = frame:getTitle(); -- get the module name for prefix and help-link label
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local category_link = ((0 == namespace) and not nocat) and substitute ('[[Category:$1]]', {cfg.settings_t.err_category}) or '';
return substitute ('<span style="color:#d33">Error: {{[[$1|#invoke:$2]]}}: $3 ([[:$4|$5]])</span>$6',
{
module_name, -- the module name with namespace
module_name:gsub ('Module:', ''), -- the module name without namespace
msg, -- the error message
cfg.settings_t.help_text_link, -- help wikilink to text at help page
cfg.settings_t.help, -- help wikilink display text
category_link -- link to error category (main namespace only)
})
end
--[[--------------------------< C I T E >---------------------------------------------------------------------
Function to call Module:Citation/CS1/sandbox with appropriate parameters. For use when an article exceeds the
post-expand include size limit.
{{#invoke:cite|cite|book|title=Title}}
]]
local function cite (frame, t) -- if positional parameter use goes away, <t> renames to <template>
local args_t = require ('Module:Arguments').getArgs (frame, {frameOnly=true}); -- simplify if positional parameter not used?
-- <start> all of this goes away if positional parameter not used; after fixes to various templates that use this module
-- this goes away because we can't get here without we already know that the calling function exists
if t then args_t[1] = t end -- override args_t[1] if called using template name as function
if not args_t[1] then -- this is the template name; we must have a template name
return make_error_msg (frame, cfg.error_messages_t.missing); -- no template name; abandon with error message
end
local template = args_t[1]:lower(); -- lowercase for table indexes
args_t[1] = nil; -- unset, no longer needed (and would break the cs1|2 template)
if not cfg.known_templates_lower_case_t[template] then -- do we recognize this template name?
return make_error_msg (frame, substitute (cfg.error_messages_t.unknown, {template})); -- nope; abandon with error message
end
-- <end>all of this goes away if positional parameter not used
-- template = template:lower(); -- add this line if positional parameter use goes away -- lowercase for table indexing
local config_t = {['CitationClass'] = cfg.citation_classes_t[template] or template};
return require ('Module:Citation/CS1')._citation (nil, args_t, config_t); -- go render the citation
end
--[[--------------------------< E X P O R T S >---------------------------------------------------------------
]]
local p = {
cite = cite, -- these go away if we adopt the code below !after necessary
Cite = cite, -- edits to the various templates that already use this module
}
local function index(_, template)
return function (frame) return cite (frame, template) end;
end
local metatable = {['__index'] = index}
setmetatable(p, metatable)
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.