Module:Sandbox/Andy M. Wang

From Wikipedia, the free encyclopedia

local mHatnote = require('Module:Hatnote')
local mArguments -- lazily initialise

local p = {}

function p.forfun(frame)
	mArguments = require('Module:Arguments')
	local args = mArguments.getArgs(frame, {parentOnly = true})
	local pages = {}
	local firstArg = (args[1] and args[1]) or 'other uses'
	for k, v in pairs(args) do
		if type(k) == 'number' then
			if k ~= 1 then
				pages[k - 1] = v
			end
		end
	end
	return p._for(mw.title.getCurrentTitle().text, firstArg, unpack(pages))
end

function p._for(titleText, firstArg, ...)
	local links = mHatnote.formatPages(...)
	--Module:See also behavior
	--links = mw.text.listToText(links)
	--Oxford comma
	if table.getn(links) <= 2 then
		links = mw.text.listToText(links, ' and ')
	else
		links = mw.text.listToText(links, ', ', ', and ')
	end
	if links == '' then
		links = mHatnote._formatLink(
			mw.title.getCurrentTitle().text .. ' (disambiguation)')
	end
	local text = 'For ' .. firstArg .. ', see ' .. links

	local noAdd = { "%.%]%]$", "%?%]%]$", "%!%]%]$" }
	local noFullStop = false
	for k, v in pairs(noAdd) do
		noFullStop = noFullStop or string.find(text, v)
		if noFullStop then break end
	end

	if not noFullStop then
		text = text .. '.'
	end
	return mHatnote._hatnote(text)
end

return p