Unsubst:

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( ' makes no sense without a parent frame' ) end if not frame.args['$B'] then error( ' 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 = '' else Not substing -- Just return the "body" return frame.args['$B'] .. (frame.args['$N'] and frame:getParent:getTitle == mw.title.getCurrentTitle.prefixedText and  or ) end end

return p