10,794
edits
TheNightAvl (talk | contribs) No edit summary |
TheNightAvl (talk | contribs) (Added rhyme) |
||
Line 351: | Line 351: | ||
vowel[temp] = true | vowel[temp] = true | ||
end | end | ||
local marked_hiatus = { | |||
["a"] = true, ["ai"] = true, ["au"] = true, | |||
["ei"] = true, ["ɛ"] = true, ["ɤ"] = true, ["ɤi"] = true, ["i"] = true, | |||
["iːe"] = true, ["ia"] = true, ["ie"] = true, ["oː"] = true, | |||
["œ"] = true, ["œa"] = true, ["øi"] = true, ["ɔ"] = true, ["ɔa"] = true, | |||
["ɔi"] = true, ["u"] = true, ["uːo"] = true, ["ua"] = true, | |||
["uo"] = true, ["y"] = true, | |||
} | |||
local long = { | local long = { | ||
Line 791: | Line 800: | ||
p_RemoveNext() | p_RemoveNext() | ||
end | end | ||
end | |||
-- RESOLUTION OF MULTIPLE BOUNDARIES -- | |||
if p_current == " " and p_next == "|" then | |||
p_Convert("|") | |||
p_RemoveNext() | |||
elseif p_current == " " and p_next == " " then | |||
p_RemoveNext() | |||
elseif p_current == "|" and (p_next == " " or p_next == "|") then | |||
p_RemoveNext() | |||
end | end | ||
Line 1,291: | Line 1,310: | ||
local output = "" | local output = "" | ||
mw.log("————— COMPILING OUTPUT —————") | |||
for i = 1, #syllables do | for i = 1, #syllables do | ||
local onset = "" | local onset = "" | ||
local coda = "" | local coda = "" | ||
local stress="" | local stress ="" | ||
-- add hiatus marker -- | |||
if syllables[i+1] then | |||
if syllables[i]["coda"] == nil and marked_hiatus[syllables[i]["nucleus"]] and syllables[i+1]["onset"] == nil then | |||
syllables[i]["coda"] = {"."} | |||
mw.log("Hiatus marked between syllables " .. i .. " and " .. i+1 .. ".") | |||
end | |||
end | |||
if type(syllables[i]) == "table" then | if type(syllables[i]) == "table" then | ||
Line 1,316: | Line 1,345: | ||
output = output .. stress .. onset .. syllables[i]["nucleus"] .. coda | output = output .. stress .. onset .. syllables[i]["nucleus"] .. coda | ||
elseif syllables[i] == " " then | |||
output = output .. " " | |||
elseif syllables[i] == "|" then | |||
output = output .. " | " | |||
else | else | ||
error("Unknown phone identified: " .. syllables[i]) | |||
end | end | ||
Line 1,324: | Line 1,357: | ||
return output | return output | ||
end | |||
function get_rhyme(IPA) | |||
if mw.ustring.match(IPA, "([ %|])") then | |||
return nil | |||
end | |||
if mw.ustring.match(IPA, "(ˈ)") then | |||
IPA = mw.ustring.gsub(IPA, "(ˌ)", "") | |||
IPA = mw.ustring.gsub(IPA, "^(.*ˈ)", "") | |||
end | |||
while true do | |||
local check = mw.ustring.sub(IPA, 1, 1) | |||
if consonant[check] then | |||
IPA = mw.ustring.sub(IPA, 2) | |||
else | |||
break | |||
end | |||
end | |||
return IPA | |||
end | end | ||
Line 1,347: | Line 1,399: | ||
outputIPA = syllables_to_string(outputIPA) | outputIPA = syllables_to_string(outputIPA) | ||
if parameters[" | if parameters["rhyme"] then | ||
outputIPA = get_rhyme(outputIPA) | |||
outputIPA = | |||
end | end | ||
mw.log(outputIPA) | if outputIPA == nil then | ||
mw.log("Invalid rhyme request.") | |||
return nil | |||
else | |||
if parameters["phon"] and parameters["format"] then | |||
outputIPA = "<span class=\"IPA\">[" .. outputIPA .. "]</span>" | |||
elseif parameters["format"] then | |||
outputIPA = "<span class=\"IPA\">/" .. outputIPA .. "/</span>" | |||
end | |||
mw.log(outputIPA) | |||
return outputIPA | |||
end | |||
end | end | ||
Line 1,363: | Line 1,428: | ||
Debug console test string: | Debug console test string: | ||
=p.generate(mw.getCurrentFrame():newChild{title="whatever",args={"rjaovs"}}) | =p.generate(mw.getCurrentFrame():newChild{title="whatever",args={"rjaovs"}}) | ||
=p.generate(mw.getCurrentFrame():newChild{title="whatever",args={"rjaovs", " | =p.generate(mw.getCurrentFrame():newChild{title="whatever",args={"rjaovs", "hj"}}) | ||
]] | ]] |