Module:IPA

From Chalo Chatu, Zambia online encyclopedia

local p = {}

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

local function IPAspan(text) return '' .. text .. '' 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, "") 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 = "" .. text .. "" elseif text then output = text end else table.insert(err, "[IPA symbols?]") end

if #err > 0 then err = "" .. table.concat(err) .. "" else err = "" end

-- Makes the error message show only in preview mode. if frame:preprocess("20122") == "" then output = output .. err end

return output .. table.concat(trackingCategories) end

return p