Modul:IsTranscluded

Z Wikipedie, otevřené encyklopedie

Modul určený ke zjišťování, jestli je stránka vložena do jiné.

Použití[editovat zdroj]

{{#invoke:IsTranscluded|main
 | page = stránka (implicitně aktuální)
 | target = do které stránky je vložena (lze vynechat, pokud je aktuální/zadaná stránka podstránkou, pak se jedná o stránku o úroveň výš)
 | 1 = co vrátit, když je vložena
 | 2 = co vrátit v opačném případě (nepovinný) }}
local p = {}

function p.main(frame)
	if not (frame and frame.args and frame.args[1]) then return nil end

	local args = frame.args

	local title
	if args.page then
		title = mw.title.new(args.page)
	else
		title = mw.title.getCurrentTitle()
	end
	local target
	if args.target then
		target = mw.title.new(args.target)
	elseif title.isSubpage then
		target = mw.title.new(title.baseText, title.namespace)
	else
		return nil
	end

	local Functions = require 'Modul:Functions'
	local content = target:getContent()
	if not content then return nil end
	content = mw.ustring.gsub(content, '<nowiki>.-</nowiki>', '<nowiki></nowiki>')
	content = mw.ustring.gsub(content, '<!%-%-.-%-%->', '<!-- -->')
	content = mw.ustring.gsub(content, '<pre%f[%W]([^>]*)>.-</pre>', '<pre%1></pre>')
	for match in mw.ustring.gmatch(content, '{{%s*([^{}<>%[%]#|]-)%s*[|}]') do
		if mw.ustring.match(match, '^/') then
			match = target.fullText .. match
		else
			if mw.ustring.match(match, '^:') then
				match = Functions.firstToUpper(mw.ustring.sub(match, 2))
			else
				match = 'Šablona:' .. Functions.firstToUpper(match)
			end
		end
		match = mw.ustring.gsub(match, '_', ' ')

		mw.log(match) -- ladění

		if match == title.fullText then
			return args[1]
		end
 	end
	return args[2] or nil
end

return p