Module:Deprecated archive/sandbox
Appearance
| This is the module sandbox page for Module:Deprecated archive (diff). See also the companion subpage for test cases (run). |
| This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing. |
Usage
[edit]Implements {{Deprecated archive}}.
{{#invoke:Deprecated archive|function_name}}
See also
[edit]--[[
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>[[[WP:ATODAY|link removed]]]</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