Jump to content

Module:IPA

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Erutuon (talk | contribs) at 00:52, 18 October 2016 (error messages if parameters are empty). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local gsub = mw.ustring.gsub
local U = mw.ustring.char

local p = {}

local function IPAspan(text)
	return '<span title="Representation in the International Phonetic Alphabet (IPA)" class="IPA">'..text..'</span>'
end

function p.IPA(frame)
	local args = frame:getParent().args[1] and frame:getParent().args or frame.args
	local namespace = mw.title.getCurrentTitle().nsText
	local languageCode = args[2] and args[1] or nil
	local text = args[2] or args[1] or ( (namespace == "Template" or namespace == "Module") and "[ɪɡˈzɑːmpəl]") or error("No text provided to Template:IPA")
	local errorText = ( ( languageCode == ""  and "<sup>[language code?]</sup>") or "") .. ( ( (text == "" or text == nil) and "<sup>[IPA symbols?]</sup>") or "")
	text = gsub(text, U(0x67), U(0x261)) -- Replace regular g with IPA g.
	local IPApage = languageCode and languageCode ~= "" and (require("Module:IPA/data")[languageCode] or error("No IPA key for the language code "..languageCode)) or nil
	local out = text ~= "" and ( IPApage and IPAspan("[["..IPApage.."|"..text.."]]" ) or IPAspan(text)) or ""
	return out .. (errorText or "")
end

return p