Module:IPA/templates

local export = {}

local m_IPA = require("Module:IPA")

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

-- Used for Template:IPA. function export.IPA(frame) local parent_args = frame.getParent and frame:getParent.args or frame local compat = parent_args["lang"] local offset = compat and 0 or 1 local params = { [compat and "lang" or 1] = {required = true, default = "en"}, [1 + offset] = {list = true, allow_holes = true}, ["n"] = {list = true, allow_holes = true}, ["qual"] = {list = true, allow_holes = true}, ["nocount"] = {type = "boolean"}, ["sort"] = {}, }	local args = require("Module:parameters").process(parent_args, params) local lang = args[compat and "lang" or 1] lang = require("Module:languages").getByCode(lang) or require("Module:languages").err(lang, compat and "lang" or 1)

-- Special:WhatLinksHere/Template:tracking/IPA/grc if lang and lang:getCode == "grc" then require("Module:debug").track("IPA/grc") end local items = {} for i = 1, math.max(args[1 + offset].maxindex, args["n"].maxindex) do		local pron = args[1 + offset][i] local note = args["n"][i] local qual = args["qual"][i] if lang then require("Module:IPA/tracking").run_tracking(pron, lang) end 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, items, nil, nil, args.sort, args.nocount) 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 parent_args = frame.getParent and frame:getParent.args or frame local compat = parent_args["lang"] local offset = compat and 0 or 1

local params = { [compat and "lang" or 1] = {required = true, default = "und"}, [1 + offset] = {list = true, allow_holes = true}, ["n"] = { list = true, allow_holes = true }, ["qual"] = { list = true, allow_holes = true }, }	local args = require("Module:parameters").process(parent_args, params) local m_XSAMPA = require("Module:IPA/X-SAMPA") pronunciations, notes, qualifiers, lang = args[1 + offset], args["n"], args["qual"], args[compat and "lang" or 1] local output = {} table.insert(output, "")

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) local m_XSAMPA = require("Module:IPA/X-SAMPA") 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 parent_args = frame.getParent and frame:getParent.args or frame local compat = parent_args["lang"] local offset = compat and 0 or 1

local params = { [compat and "lang" or 1] = {required = true, default = "und"}, [1 + offset] = {required = true, list = true, allow_holes = true}, }	local args = require("Module:parameters").process(parent_args, params) local m_XSAMPA = require("Module:IPA/X-SAMPA") pronunciations, lang = args[1 + offset], args[compat and "lang" or 1] local output = {} table.insert(output, "") return table.concat(output) end

return export