If you find this page useful and would like to be notified of changes made to this page, start by inputting your email below.
powered by ChangeDetection
Documentation for this module may be created at Module:Unsubst/doc
local p = {} local specialParams = { ['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates ['$B'] = 'template content', } p[''] = function ( frame ) if not frame:getParent() then error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' ) end if not frame.args['$B'] then error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' ) end if mw.isSubsting() then ---- substing -- Combine passed args with passed defaults local args = {} for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end -- Build an equivalent template invocation -- First, find the title to use local titleobj = mw.title.new(frame:getParent():getTitle()) local title if titleobj.namespace == 10 then -- NS_TEMPLATE title = titleobj.text elseif titleobj.namespace == 0 then -- NS_MAIN title = ':' .. titleobj.text else title = titleobj.prefixedText end -- Build the invocation body with numbered args first, then named local ret = '{{' .. title for k, v in ipairs( args ) do if string.find( v, '=', 1, true ) then -- likely something like 1=foo=bar, we need to do it as a named arg break end ret = ret .. '|' .. v args[k] = nil end for k, v in pairs( args ) do ret = ret .. '|' .. k .. '=' .. v end return ret .. '}}' else ---- Not substing -- Just return the "body" return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[wikipedia:Category:Calls to Module:Unsubst that use $N|Category:Calls to Module:Unsubst that use $N]]' or '') end end return p