This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local u = require("Module:string/char")

local export = {}

local lang = require("Module:languages").getByCode("eo")
local hat = u(0x302)
local breve = u(0x306)

function export.convert(word)
	if word:match("[xX]") then
		return word
			:gsub("([cghjsCGHJS])[xX]", "%1" .. hat)
			:gsub("([uU])[xX]", "%1" .. breve)
	else
		return word
			:gsub("([cghjsCGHJS])[hH]", "%1" .. hat)
			:gsub("([aeoAEO][uU])", "%1" .. breve)
	end
end

function export.spelling(frame)
	return frame:expandTemplate{ title = "spelling of",
		args = {[1] = "eo", [2] = (mw.title.getCurrentTitle().text:match("[xX]") and "X" or "H") .. "-system", [3] = frame:getParent() and frame:getParent().args[1] or export.convert(mw.title.getCurrentTitle().text)}}
end

return export