Jump to content

Модул:redlink category

Аз Wiktionary

Documentation for this module may be created at Модул:redlink category/doc

local export = {}

local rmatch = mw.ustring.match

function export.cat(frame)
	local redlink_category = ""

	local m_languages = require("Module:languages")
	local code = frame.args[1] -- language code
	local template = frame.args["template"]

	local lang = m_languages.getByCode(frame.args[1])
	local sc = lang:findBestScript(frame.args[2])
	local is_linked, entry = pcall(require("Module:links").getLinkPage, frame.args[2], lang, sc) -- entry name (parameter 2 in Template:m, Template:l)

	local link_object = mw.title.new(entry)
	
	-- Prevent an expensive parser function error. Unfortunately, we can't check
	-- the expensive parser function count before running the preceding code
	-- in this function.
	local success, exists
	if link_object then
		success, exists = pcall(function () return link_object.exists end)
	end

	if success and not exists then
		local langname = lang:getCanonicalName()
		
		redlink_category = "[[Category:" .. langname .. " redlinks]]"
		if template and template ~= "-" then
			redlink_category = redlink_category .. "[[Category:" .. langname .. " redlinks/" .. template .. "]]"
		end
	end
	if is_linked then -- a blank terms (i.e. those intended to be unlinked) still seem to invoke this module, so we don't want to add them to the category
		return redlink_category
	else
		return ""
	end

end

return export