Module:IPA
Jump to navigation
Jump to search
Usage
{{#invoke:IPA|tag|en|ðɪs|link=1}} {{#invoke:IPA|tag|ðɪs}} {{#invoke:IPA|tag|gɛt}} {{#invoke:IPA|tag||gɛt|link=1}} {{#invoke:IPA|tag|||link=1}} {{#invoke:IPA|tag|en||link=1}}
- ðɪs
- ðɪs
- gɛt
- gɛt
local p = {} local match = mw.ustring.match local gsub = mw.ustring.gsub local U = mw.ustring.char local function IPAspan(text) return '<span title="Representation in the International Phonetic Alphabet (IPA)" class="IPA">' .. text .. '</span>' end local function ine(text) if text == "" then return nil else return text end end function p.tag(frame) local linkHelpPage = require('Module:Yesno')(frame.args.link, false) local args = frame:getParent().args[1] and frame:getParent().args or frame.args local namespace = mw.title.getCurrentTitle().nsText local text, lang local err = {} local trackingCategories = {} local IPApage -- Tracks incorrect characters. local function track(text) -- non-IPA g if mw.ustring.find(text, U(0x67)) then mw.log("Incorrect character g found in " .. text) table.insert(trackingCategories, "[[Category:IPA templates with incorrect characters]]") end end if linkHelpPage then text = ine(args[2]) lang = ine(args[1]) if lang then IPApage = mw.loadData("Module:IPA/data")[lang] if not IPApage then table.insert(err, "[No IPA key for the language code " .. lang.."]") end else table.insert(err, "[language code?]") end else text = ine(args[1]) end local output = "" if text then workingString = text -- Remove targets of wikilinks. workingString = gsub(workingString, "%[%[([^|]+|)", "") -- Remove HTML tags. workingString = gsub(workingString, "<[^>]+>", "") track(workingString) text = IPAspan(text) if IPApage then output = "[[" .. IPApage .. "|" .. text .. "]]" elseif text then output = text end else table.insert(err, "[IPA symbols?]") end if #err > 0 then err = "<sup>" .. table.concat(err) .. "</sup>" else err = "" end -- Makes the error message show only in preview mode. if frame:preprocess("{{REVISIONID}}") == "" then output = output .. err end return output .. table.concat(trackingCategories) end return p