Module:lut-pron
Appearance
- This module lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local IPA_modifier_apostrophe = mw.ustring.char(0x02BC)
local IPA_primary_stress = mw.ustring.char(0x02C8)
local IPA_secondary_stress = mw.ustring.char(0x02CC)
local IPA_tie_bar_top = mw.ustring.char(0x0361)
local IPA_tie_bar_below = mw.ustring.char(0x035C)
local IPA_modifier_triangular_colon = mw.ustring.char(0x2D0)
-- List of the combining characters used in Lushootseed
local combining_caron = mw.ustring.char(0x30C) -- (Only used in x wedge)
local small_z = mw.ustring.char(0x1DBB) -- (Only used in d raised z)
local small_w = mw.ustring.char(0x2B7) -- (Used in all 'raised w' letters)
local comma_above = mw.ustring.char(0x313)
local comma_above_right = mw.ustring.char(0x315) -- (Used in glottalized L and glottalized barred lambda)
local small_turned_e = mw.ustring.char(0x01DD) -- schwa lookalike
local lut_to_IPA = {
['\''] = IPA_primary_stress,
[','] = IPA_secondary_stress,
['.'] = '.',
[':'] = IPA_modifier_triangular_colon,
[comma_above] = IPA_modifier_apostrophe,
[comma_above_right] = IPA_modifier_apostrophe,
[small_w] = small_w,
['a'] = 'ɑ',
['ə'] = 'ə',
[small_turned_e] = 'ə',
['i'] = 'i',
['u'] = 'u',
['ʔ'] = 'ʔ',
['b'] = 'b',
['c'] = 't' .. IPA_tie_bar_top .. 's',
['č'] = 't' .. IPA_tie_bar_top .. 'ʃ',
['c' .. combining_caron] = 't' .. IPA_tie_bar_top .. 'ʃ', -- č is preferred
['d'] = 'd',
['d' .. small_z] = 'd' .. IPA_tie_bar_top .. 'z',
['g'] = 'ɡ',
['h'] = 'h',
['ǰ'] = 'd' .. IPA_tie_bar_top .. 'ʒ',
['k'] = 'k',
['l'] = 'l',
['ɬ'] = 'ɬ',
['ƛ'] = 't' .. IPA_tie_bar_top .. 'ɬ',
['m'] = 'm',
['n'] = 'n',
['p'] = 'p',
['q'] = 'q',
['s'] = 's',
['š'] = 'ʃ',
['s' .. combining_caron] = 'ʃ', -- š is preferred
['t'] = 't',
['w'] = 'w',
['x'] = 'x',
['x' .. combining_caron] = 'χ',
['y'] = 'j'
}
-- Convert Lushootseed string into IPA
-- Also, convert apostrophe and comma into primary and secondary stress markers
local function convert_IPA(lut_string)
local pattern = "[ʔaəiubcdqkcghǰlɬƛpsšcčtwxy',.:" .. comma_above ..
small_turned_e .. comma_above_right .. small_w ..
"][" .. combining_caron .. small_z .. "]?"
local result = ""
for letter in mw.ustring.gmatch(lut_string, pattern) do
--result = result .. letter .. ' '
result = result .. lut_to_IPA[letter]
end
return result
end
function export.lut_IPA( frame )
local params = {
[1] = {list = true, allow_holes = true}
}
local err = nil
local args = frame:getParent().args
local term = args[1]
if not term then
term = mw.title.getCurrentTitle().text
end
local items = {}
table.insert(items, { pron = '/' .. convert_IPA(term) .. '/'})
local lang = require("Module:languages").getByCode("lut")
mw.log(items['pron'])
return require("Module:IPA").format_IPA_full { lang = lang, items = items }
end
return export