Module:Respell

Frae Wikipedia, the free beuk o knawledge
local p = {}
local getArgs = require('Module:Arguments').getArgs

function p._main(args)
	local ret = {}
	local hasUnsc = {}
	local j = 0
	
	for i, v in ipairs(args) do
		-- Compatibility: Ignore arguments that only contain an apostrophe
		if v and v ~= '' and v ~= "'" then
			hasUnsc[i] = mw.ustring.find(v, '_')
			if hasUnsc[i] then
				v = mw.ustring.gsub(v, '_', ' ')
			else
				if mw.ustring.find(v, '%u') and v == mw.ustring.upper(v) then
					v = string.format("'''%s'''", v)
				end
				if i ~= 1 and not hasUnsc[i - 1] and v ~= '-' then
					table.insert(ret, '-')
				end
			end
			table.insert(ret, v)
		end
		j = i
	end
	
	-- Create <small title="..."><i>...</i></small>
	local small = mw.html.create('small')
	small
		:attr('title', 'Inglis pronunciation respellin')
		:tag('i')
		:wikitext(table.concat(ret))
	ret = tostring(small)
	
	-- For documentation: Disable linking by adding a blank parameter at the end
	if args[j] ~= '' then 
		ret = string.format('[[Help:Pronunciation respellin key|%s]]', ret)
	end
	
	return ret
end

function p.main(frame)
	local args = getArgs(frame, {removeBlanks = false})
	return p._main(args)
end

return p