Permanently protected module

Difference between revisions of "Module:Caller title"

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
(Created page with "local p = {} function p.title(frame) return frame:getParent():getTitle() end function p.lang(frame) local base = frame.args.base local title = p.title(frame) if base ~=...")
 
m (Protected "Module:Caller title": High-risk template or module (more info) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
 
(No difference)

Latest revision as of 18:01, 12 August 2020

Module documentation

This module simply returns the title of the page calling this module. It’s intended for templates translated using the Translate extension. It has two entry points, both can be called with {{#invoke:Caller title|entry point name}}:

title
Get the full title of the template.
lang
Get the language code (subpage name). In fact, it doesn’t check if the subpage name is a valid language code, so if called from X/y/z, it’ll happily return z. The template using this functionality should ensure it’s only used on language subpages (or be okay with garbage output). An additional |base= parameter can be given with the full title of the translation base page, so that page language is used on that page (as there is no language code subpage there).

local p = {}

function p.title(frame)
	return frame:getParent():getTitle()
end

function p.lang(frame)
	local base = frame.args.base
	local title = p.title(frame)
	if base ~= title then
		local parts = mw.text.split(p.title(frame), '/', true)
		return parts[#parts]
	else
		-- we’re on the base page of the translation (directly, it’s not translated from somewhere),
		-- so we have no subpage language code, but we use PAGELANGUAGE
		return frame:preprocess('{{PAGELANGUAGE}}')
	end
end

return p