Anonymous
    ×
    Create a new article
    Write your page title here:
    We currently have 187 articles on Edge of Twilight Wiki. Type your article name above or click on one of the titles below and start writing!



    Edge of Twilight Wiki

    Module:Cite: Difference between revisions

    en>Ahecht
    simplify
     
    m 1 revision imported
     
    (No difference)

    Latest revision as of 13:06, 8 September 2025

    Documentation for this module may be created at Module:Cite/doc

    require ('strict');
    
    local cfg = mw.loadData ('Module:Cite/config');
    
    
    --[[--------------------------< 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.
    
    ]]
    
    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.
    
    ]]
    
    local function make_error_msg (frame, msg)
    	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 substitute ('[[Category:$1]]', {cfg.settings_t.err_category}) or '';
    	return substitute ('<span style="color:#d33">Error: &#x7B;{[[$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 (for main namespace errors 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|book|title=Title}}
    
    ]]
    
    local function cite (frame, template)
    	local args_t = require ('Module:Arguments').getArgs (frame, {frameOnly=true});
    
    	template = template:lower();												-- lowercase for table indexes
    	
    	if not cfg.known_templates_t[template] then									-- do we recognize this template name?
    		return make_error_msg (frame, substitute (cfg.settings_t.unknown_name, {template}));	-- nope; abandon with error message
    	end
    
    	local config_t = {['CitationClass'] = cfg.citation_classes_t[template] or template};	-- set CitationClass value
    	return require ('Module:Citation/CS1')._citation (nil, args_t, config_t);	-- go render the citation
    end
    
    
    --[[--------------------------< E X P O R T S >---------------------------------------------------------------
    ]]
    
    return setmetatable({}, {__index =												-- returns an empty TABLE whose metatable has the __index set so that, for any given KEY, it returns
    	function(_, template)														-- this anonymous function called as function(TABLE, KEY)
    		return function (frame) return cite (frame, template) end;				-- which in turn returns a function that calls cite() with the KEY name
    	end
    })