模組:ExpandTemplates

local p = {}
local error = require( 'Module:Error' )

local function makeRandomComment()
	return '<!-- Module:ExpandTemplates # ' .. math.random() .. ' -->'
end

local function stripRandomComment( text )
	return mw.ustring.gsub( text, '<!%-%- Module:ExpandTemplates # [%d.]+ %-%->', '' )
end

local function doTitle( frame, title )
	if title == mw.title.getCurrentTitle() and not mw.isSubsting() then
		return error.error{ message = 'Module:ExpandTemplates on current title must be substed.' }
	end
	local text = title:getContent()
	if text == nil then
		return ''
	end
	-- frame:preprocess instead of expandTemplate so that <includeonly>s are not in transclusion mode
	-- and unfortunately it's impossible to specify a context title here...
	text = frame:preprocess( text )
	text = mw.text.unstrip( text )
	return stripRandomComment( text ) .. makeRandomComment()
end

function p.self( frame )
	return doTitle( frame, mw.title.getCurrentTitle() )
end

function p.page( frame )
	return doTitle( frame, mw.title.new( frame.args[1] ) )
end

return p