Module:rad-IPA: Difference between revisions

m
ਕੋਈ ਸੋਧ ਸਾਰ ਨਹੀਂ
mNo edit summary
mNo edit summary
Line 103: Line 103:
data["!"] = data["."]
data["!"] = data["."]
data["?"] = data["."]
data["?"] = data["."]
local IPA = {}


function append_IPA (working_IPA)
function append_IPA (working_IPA)
local IPA_size = #IPA --This variable needs to be set before the function or it breaks.
local IPA_size = #IPA --This variable needs to be set before the function or it breaks.
print("————— REGISTERING PHONE —————")
mw.log("————— REGISTERING PHONE —————")
if IPA_size > 0 then
if IPA_size > 0 then
for i=1, IPA_size do
for i=1, IPA_size do
Line 113: Line 115:
end
end
IPA[1] = working_IPA
IPA[1] = working_IPA
print("[" .. working_IPA .. "] registered.")
mw.log("[" .. working_IPA .. "] registered.")
print("Current IPA: [" .. table.concat(IPA, "][") .. "]")
mw.log("Current IPA: [" .. table.concat(IPA, "][") .. "]")
end
end


-- BEGIN BASE GENERATION --
-- BEGIN BASE GENERATION --
local IPA = {}


function generate_IPA(word)
function generate_IPA(word)
Line 140: Line 140:
local i_iteration = -2
local i_iteration = -2


print("\n=========================\n\nCURRENT TEST STRING: <".. mw.ustring.upper(s) .. ">")
mw.log("\n=========================\n\nCURRENT TEST STRING: <".. mw.ustring.upper(s) .. ">")


if s_len < 3 then
if s_len < 3 then
Line 147: Line 147:


for i = i_iteration, 0 do
for i = i_iteration, 0 do
  print("————— <" .. split_s[s_len + i] .. "> selected. (i = " .. i .. ") —————")
  mw.log("————— <" .. split_s[s_len + i] .. "> selected. (i = " .. i .. ") —————")
  getData = data[split_s[s_len + i]]
  getData = data[split_s[s_len + i]]
  local deadEnd = false
  local deadEnd = false
Line 158: Line 158:
if i == 0 then
if i == 0 then
if getData[false] then
if getData[false] then
  print("Singular index recognised.")
  mw.log("Singular index recognised.")
  getData = getData[false]
  getData = getData[false]
  print("Index acquired: " .. getData)
  mw.log("Index acquired: " .. getData)
else
else
  error(split_s[s_len] .. " is an invalid character.")
  error(split_s[s_len] .. " is an invalid character.")
end
end
else
else
  print("Tabular index recognised.")
  mw.log("Tabular index recognised.")
  for j = 1, 0 - i do
  for j = 1, 0 - i do
-- DEBUG PRINT ONLY
-- DEBUG PRINT ONLY
Line 175: Line 175:
end
end
-- END OF DEBUG PRINT
-- END OF DEBUG PRINT
print("Testing " .. currentCombo)
mw.log("Testing " .. currentCombo)
if getData[split_s[s_len + i + j]] then
if getData[split_s[s_len + i + j]] then
  getData = getData[split_s[s_len + i + j]]
  getData = getData[split_s[s_len + i + j]]
  print("Combination recognised: " .. currentCombo .. " (j = " .. j .. ")")
  mw.log("Combination recognised: " .. currentCombo .. " (j = " .. j .. ")")
  if type(getData) == "string" then
  if type(getData) == "string" then
if j + i == 0 then
if j + i == 0 then
  print("Index acquired: " .. getData)
  mw.log("Index acquired: " .. getData)
  multiMatch = true
  multiMatch = true
  break
  break
else
else
  print('Non-final index: dead end.')
  mw.log('Non-final index: dead end.')
  getData = {}
  getData = {}
  deadEnd = true
  deadEnd = true
Line 194: Line 194:
  elseif j + i == 0 and getData[false] then
  elseif j + i == 0 and getData[false] then
getData = getData[false]
getData = getData[false]
print("Index acquired: " .. getData)
mw.log("Index acquired: " .. getData)
multiMatch = true
multiMatch = true
break
break
Line 200: Line 200:
error("data[" .. table.concat(getData, "][") .. "][false] is missing." )
error("data[" .. table.concat(getData, "][") .. "][false] is missing." )
  else
  else
print("Target still tabular: reiterating.")
mw.log("Target still tabular: reiterating.")
  end
  end
  else
  else
print('Dead end.')
mw.log('Dead end.')
getData = {}
getData = {}
deadEnd = true
deadEnd = true
Line 213: Line 213:
  end
  end
  if type(getData) == "string" and (i == 0 or multiMatch == true) then
  if type(getData) == "string" and (i == 0 or multiMatch == true) then
  print("Target acquired of length " .. 1 - i .. ", converting to [" .. getData .. "].")
  mw.log("Target acquired of length " .. 1 - i .. ", converting to [" .. getData .. "].")
  append_IPA(getData)
  append_IPA(getData)
  s = mw.ustring.sub(s, 1, s_len + i - 1)
  s = mw.ustring.sub(s, 1, s_len + i - 1)
Line 219: Line 219:
  break
  break
elseif deadEnd == false then
elseif deadEnd == false then
print('Non-final index: dead end.')
mw.log('Non-final index: dead end.')
  end
  end
end
end
end
end


print('\n————— STRING EXHAUSTED —————')
mw.log('\n————— STRING EXHAUSTED —————')
return table.concat(IPA)
return table.concat(IPA)