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

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

The template renders a plain label followed by a visible marker indicating that
the original archive link was removed.
]]

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

	return '<span style="text-decoration: underline dashed #ccc;">' ..
		mw.text.nowiki(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