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.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a25db5f2eb5cf8bb

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