Module:siwa-pron: Difference between revisions

From Linguifex
Jump to navigation Jump to search
No edit summary
No edit summary
Line 8: Line 8:
local rules = {
local rules = {
[1] = {
[1] = {
["mm"] = "mː",
["bb"] = "pː",
["vv"] = "wː",
["nn"] = "nː",
["dd"] = "tː",
["ḍḍ"] = "ðː",
["ss"] = "sː",
["ṡṡ"] = "ɕː",
["ddį"] = "d͡ʑː",
["gį"] = "jː",
["rr"] = "rː",
["ll"] = "lː",
["gg"] = "kː",
["ġġ"] = "xː",
["ng"] = "ŋː",
["hh"] = "hː",
["ḥḥ"] = "ʔː",
},
[2] = {
--consonants not affected by stress
--consonants not affected by stress
["ṡ"] = "ɕ",
["ṡ"] = "ɕ",
Line 18: Line 37:
["ġ"] = "x",
["ġ"] = "x",
},
},
[2] = {
[3] = {
--long vowels and o remain unchanged
--long vowels and o remain unchanged
["ẻu"] = "øː",
["ẻu"] = "øː",
Line 33: Line 52:
}
}


local consonant = "[" .. "mpbvntdsṡrkgġhįų" .. "]"
local consonant = "[" .. "mpbvntdsṡrklgġhįų" .. "]"
local vowel = "[" .. "aæɑeɛiɪɔʊyœøɤ" .. "]"
local vowel = "[" .. "aæɑeɛiɪɔʊyœøɤ" .. "]"



Revision as of 17:23, 1 January 2021



local export = {}
	
local m_IPA = require("Module:IPA")
local m_su = require("Module:string utilities")
local m_table = require("Module:table")
local m_sm = mw.loadData('Module:siwa-pron/data')

local rules = {
	[1] = {
		["mm"] = "mː",
		["bb"] = "pː",
		["vv"] = "wː",
		["nn"] = "nː",
		["dd"] = "tː",
		["ḍḍ"] = "ðː",
		["ss"] = "sː",
		["ṡṡ"] = "ɕː",
		["ddį"] = "d͡ʑː",
		["gį"] = "jː",
		["rr"] = "rː",
		["ll"] = "lː",
		["gg"] = "kː",
		["ġġ"] = "xː",
		["ng"] = "ŋː",
		["hh"] = "hː",
		["ḥḥ"] = "ʔː",
	},
	[2] = {
		--consonants not affected by stress
		["ṡ"] = "ɕ",
		["tṡ"] = "t͡ɕ",
		["dį"] = "d͡ʑ",
		["ḍ"] = "ð",
		["dl"] = "tɬ",
		["ng"] = "ŋː",
		["nį"] = "ɲ",
		["ġ"] = "x",
	},
	[3] = {
		--long vowels and o remain unchanged
		["ẻu"] = "øː",
		["õu"] = "ɔ̃ː̃",
		["õ"] = "ɔ̃",
		["ả"] = "æː",
		["ẻ"] = "eː",
		["ỉ"] = "iː",
		["ỏ"] = "ʊː",
		["ủ"] = "uː",
		["ỷ"] = "yː",
		["ů"] = "ø",
		}
	}

local consonant = "[" .. "mpbvntdsṡrklgġhįų" .. "]"
local vowel = "[" .. "aæɑeɛiɪɔʊyœøɤ" .. "]"

--[[function export.syllable(frame)
	local word = mw.title.getCurrentTitle().text
	local pattern = "^[" .. initial .. "]?[" .. vocalic .. "]{1}[" .. internal .. "]?"
	x = m_su.capturing_split(word, pattern)
	return x[1]
end]]

function export.crux(term)
	--local IPA = {}
	
	--IPA = table.concat(IPA)
	for _, rule in ipairs(rules) do
		for regex, replacement in pairs(rule) do
			term = mw.ustring.gsub(term, regex, replacement)
		end
	end
	return term
end

function export.show(frame)
	local parent_args = frame:getParent().args
	local params = {
		[1] = { default = mw.title.getCurrentTitle().text },
	}
	local args = require("Module:parameters").process(parent_args, params)
	local term = args[1]
	
	local ipa = export.crux(term)
	
	local IPA_key = "IPA for Siwa"
	local key_link = "[[".. IPA_key .."|key]]"

	local prefix = "[[w:IPA chart|IPA]]<sup>(" .. key_link .. ")</sup>:&#32;"
	local accent="(\''Aingo\'') "
	
	ipa = "<span style=\"font-size:110%;font-family:Gentium,'DejaVu Sans','Segoe UI',sans-serif>[" .. ipa .. "]</span>"
	ipa = accent..prefix..ipa
	
	return ipa
end

return export