Jump to content

Module:Sort/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Implement {{sort}} and {{sortname}}
 
Copy note from Module:Sortkey
Line 3: Line 3:
local p = {}
local p = {}


local demo = function(s) return '<' .. string.sub(s,2,-8) .. '</span>' end

-- Protect against sortkey nesting.
-- Example: {{sort|{{dts|2013|07|07}}|{{dts|1990|12|01}}}}
local encode = function(s) return (string.find(sortkey, "sortkey") or string.find(sortkey, "data-sort-value"))
local encode = function(s) return (string.find(sortkey, "sortkey") or string.find(sortkey, "data-sort-value"))
and "" or mw.text.encode(sortkey) end
and "" or mw.text.encode(sortkey) end
local demo = function(s) return '<' .. string.sub(s,2,-8) .. '</span>' end


function p._name(args)
function p._name(args)
Line 28: Line 31:
end
end


function p.name(frame)
function p.name(frame) -- {{sortname}}
local args = getArgs(frame, {removeBlanks = false})
local args = getArgs(frame, {removeBlanks = false})
return p._name(args)
return p._name(args)
Line 40: Line 43:
end
end


function p.sort(frame)
function p.sort(frame) -- {{sort}}
local args = getArgs(frame)
local args = getArgs(frame)
return p._sort(args)
return p._sort(args)

Revision as of 19:15, 12 September 2024

local getArgs = require('Module:Arguments').getArgs

local p = {}

local demo = function(s) return '<' .. string.sub(s,2,-8) .. '</span>' end

-- Protect against sortkey nesting.
-- Example: {{sort|{{dts|2013|07|07}}|{{dts|1990|12|01}}}}
local encode = function(s) return (string.find(sortkey, "sortkey") or string.find(sortkey, "data-sort-value"))
		and "" or mw.text.encode(sortkey) end

function p._name(args)
	local encode = encode( ((args[4] or args.sort or '') ~= '')
		and (args[4] or args.sort)
		or ((args[2] or args.last or '{{{last}}}')..', '..(args[1] or args.first or '{{{first}}}')))
	local span = (args[1] or args.first or '{{{first}}}')..' '..(args[2] or args.last or '{{{last}}}')
	if ((args.nolink or '') == '') and ((args[1] or args.first or '')..(args[2] or args.last or '')..(args.dab or '') ~= '-') then
		if (args[3] or args.link or '') ~= '' then
			span = (args[3] or args.link) .. '|' .. span 
		elseif (args.dab or '') ~= '' then
			span = span .. ' (' .. args.dab .. ')|' .. span
		end
		span = '[[' .. span .. ']]'
	end
	local cat = (mw.title.getCurrentTitle().namespace == 0 and not args.demo)
		and '[[Category:Articles with hCards]]' or ''
	span = '<span data-sort-value="' .. encode ..
		'"><span class="vcard"><span class="fn">' .. span .. 
		'</span></span></span>'
	return (args.demo and demo(span) or span) .. cat
end

function p.name(frame) -- {{sortname}}
	local args = getArgs(frame, {removeBlanks = false})
	return p._name(args)
end

function p._sort(args)
	local span = '<span data-sort-value="' ..
		encode((args[1] or '{{{1}}}') .. ' !') .. '">' ..
		(args[2] or ('[['..(args[1] or '{{{1}}}')..']]')) .. '</span>'
	return args.demo and demo(span) or span
end

function p.sort(frame) -- {{sort}}
	local args = getArgs(frame)
	return p._sort(args)
end

return p