Difference between revisions of "Module:IPA"
Jump to navigation
Jump to search
blackwiki>Erutuon (escaping is unnecessary, because the original text doesn't have to be restored) |
m (32 revisions imported) |
||
| (3 intermediate revisions by one other user not shown) | |||
| Line 32: | Line 32: | ||
local trackingCategories = {} | local trackingCategories = {} | ||
local IPApage | 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 | if linkHelpPage then | ||
| Line 53: | Line 62: | ||
if text then | if text then | ||
| − | + | workingString = text | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | -- Remove targets of wikilinks. | |
| − | + | workingString = gsub(workingString, "%[%[([^|]+|)", "") | |
| − | + | -- Remove HTML tags. | |
| − | + | workingString = gsub(workingString, "<[^>]+>", "") | |
| − | + | track(workingString) | |
| − | |||
| − | |||
| − | |||
| − | |||
text = IPAspan(text) | text = IPAspan(text) | ||
Latest revision as of 17:11, 26 September 2020
| 40x40px | This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
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