Module:IPA: Difference between revisions
Jump to navigation
Jump to search
en>Nardog (specify Latin script, see Template talk:IPA-all#Wrongly tagging IPA with language tags) |
m (1 revision imported) |
||
Line 1: | Line 1: | ||
<span title="Representation in the International Phonetic Alphabet (IPA)" class="IPA" lang= | 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 |
Revision as of 02:13, 18 January 2023
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