Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Deprecated archive/sandbox

From Wikipedia, the free encyclopedia
--[[
Simple shell for {{Deprecated archive}}.

This sandbox intentionally passes the title through without Lua-level entity
decoding or nowiki escaping. It is for testing only; the returned title may
render as wikitext or HTML.
]]

require('strict')

local p = {}
local tracking_category = '[[Category:Deprecated archive template links]]'
local positional_parameter_error =
	'<span style="font-size:100%" class="error citation-comment">(Positional parameters ignored)</span>'

local function trim(value)
	if value == nil then
		return ''
	end
	return mw.text.trim(tostring(value))
end

local function is_set(value)
	return trim(value) ~= ''
end

local function get_args(frame)
	local args = {}
	local parent = frame and frame:getParent()

	if parent then
		for key, value in pairs(parent.args) do
			if is_set(value) then
				args[key] = value
			end
		end
	end

	if frame then
		for key, value in pairs(frame.args) do
			if is_set(value) then
				args[key] = value
			end
		end
	end

	return args
end

local function removed_link_marker()
	return '<sup>&#91;[[WP:ATODAY|link removed]]&#93;</sup>'
end

local function removed_link_label(label)
	if trim(label) == '' then
		return removed_link_marker()
	end

	-- Deliberately do not decode or escape the title in the sandbox.
	return '<span style="text-decoration: underline dashed #ccc;">' ..
		label ..
		'</span>' .. removed_link_marker()
end

local function has_positional_parameters(args)
	for key, _ in pairs(args) do
		if type(key) == 'number' then
			return true
		end
	end
	return false
end

function p._main(args)
	local archive = trim(args.url)
	local label = trim(args.title)
	local positional_error = has_positional_parameters(args) and positional_parameter_error or ''

	-- Shell parameters for future maintenance tooling; intentionally not rendered.
	local _ = { archive = archive }

	return removed_link_label(label) .. positional_error .. tracking_category
end

function p.main(frame)
	return p._main(get_args(frame))
end

return p