Module:IPA/templates/sandbox

local export = {}

local m_IPA = require("Module:IPA")

local U = mw.ustring.char local syllabic = U(0x0329)

local tracking = { en = { {			symb = "iə", cat = "ambig", },		{			symb = { "ɪi", "ʊu", "ɪj", "ʊw" }, cat = "eeoo", },	},	cs = { {			symb = "[mnrl]", cat = "syllabic-consonant", },	},	ps = { {			symb = "ɤ", cat = "Pashto", },	},	fa = { {			symb = "ʔ", cat = "glottal-stop", },	},	{		{			symb = "", cat = "", },	}, }

local function run_tracking(IPA, lang) lang = lang:getCode for i, arguments in ipairs(tracking[lang]) do		mw.log("found tracking parameters") if type(arguments) == "table" then local required = { "symb", "cat" } hasArgs = true for i, arg in pairs(required) do				if not arguments[arg] or arguments[arg] == "" then hasArgs = false end end if hasArgs == true then local symbols = arguments.symb local category = arguments.cat if type(symbols) == "string" then symbols = { symbols } end for _, symbol in pairs(symbols) do					if mw.ustring.find(IPA, symbol) then require("Module:debug").track("IPA/" .. lang .. "/" .. category) end end end end end end

-- Used for Template:IPA. function export.IPA(frame) local params = { [1] = {list = true, allow_holes = true}, ["n"] = {list = true, allow_holes = true}, ["qual"] = {list = true, allow_holes = true}, ["lang"] = {required = false, default = ""}, }	local err = nil local args = require("Module:parameters").process(frame.getParent and frame:getParent.args or frame, params) local lang = mw.title.getCurrentTitle.nsText == "Template" and "en" or args["lang"] lang = require("Module:languages").getByCode(lang) if not lang then if args["lang"] == "" then err = "No language code specified." else err = "The language code '" .. args["lang"] .. "' is not valid." end end -- Temporary test to see which Finnish entries use rather than if lang and (lang:getCode == "ca" or lang:getCode == "fi") then require("Module:debug").track("IPA/" .. lang:getCode) end local items = {} for i = 1, math.max(args[1].maxindex, args["n"].maxindex) do		local pron = args[1][i] local note = args["n"][i] local qual = args["qual"][i] run_tracking(pron, lang) if pron or note or qual then table.insert(items, {pron = pron, note = note, qualifiers = {qual}}) end end return m_IPA.format_IPA_full { lang = lang, items = items, err = err } end

-- Used for Template:IPAchar. function export.IPAchar(frame) local params = { [1] = {list = true, allow_holes = true}, ["n"] = {list = true, allow_holes = true}, ["lang"] = {}, -- This parameter is not used and does nothing, but is allowed for futureproofing. }	local args = require("Module:parameters").process(frame.getParent and frame:getParent.args or frame, params) local items = {} for i = 1, math.max(args[1].maxindex, args["n"].maxindex) do		local pron = args[1][i] local note = args["n"][i] if pron or note then table.insert(items, {pron = pron, note = note}) end end -- Format return m_IPA.format_IPA_multiple(nil, items) end

function export.XSAMPA(frame) local params = { [1] = { required = true }, }	local args = require("Module:parameters").process(frame:getParent.args, params) return m_IPA.XSAMPA_to_IPA(args[1] or "[Eg'zA:mp5=]") end

-- Used by Template:X2IPA function export.X2IPAtemplate(frame) local params = { [1] = { list = true, allow_holes = true }, ["n"] = { list = true, allow_holes = true }, ["qual"] = { list = true, allow_holes = true }, ["lang"] = { required = true }, }	local args = require("Module:parameters").process(frame:getParent.args, params) pronunciations, notes, qualifiers, lang = args[1], args["n"], args["qual"], args["lang"] local output = {} table.insert(output, "") end return table.concat(output) end

-- Used by Template:X2IPAchar function export.X2IPAchar(frame) local params = { [1] = { list = true, allow_holes = true }, ["n"] = { list = true, allow_holes = true }, ["lang"] = { }, }	local args = require("Module:parameters").process(frame:getParent.args, params) pronunciations, notes, lang = args[1], args["n"], args["lang"] local output = {} table.insert(output, "") return table.concat(output) end

-- Used by Template:X2rhymes function export.X2rhymes(frame) local params = { [1] = { required = true, list = true, allow_holes = true }, ["lang"] = { required = true }, }	local args = require("Module:parameters").process(frame:getParent.args, params) pronunciations, lang = args[1], args["lang"] local output = {} table.insert(output, "") return table.concat(output) end

return export