Module:qlu-pron: Difference between revisions

No edit summary
No edit summary
Line 204: Line 204:


function export.crux(term, outputs)
function export.crux(term, outputs)
local ret = {["phonemic"] = "", ["phonetic"] = "", ["dialectal"] = {}}
local dialects = {}
term = mw.ustring.lower(term)
term = mw.ustring.lower(term)
Line 254: Line 254:
return "/" .. phonemic .. "/ [" .. phonetic .. "]"
return "/" .. phonemic .. "/ [" .. phonetic .. "]"
end
end
dialects["upper"] = upper
dialects["bolognese"] = bolognese
dialects["paulistan"] = paulistan
ret.phonemic = phonemic
return phonemic, phonetic, dialects
ret.phonetic = phonetic
ret.dialectal.upper = upper
ret.dialectal.bolognese = bolognese
ret.dialectal.paulistan = paulistan
    mw.logObject(ret, "a")
return ret
end
end


function merge_tables(foo, bar)
function merge_tables(foo, bar)
     local merged = {}
     local merged_table = {}
 
   
     for key, value in pairs(foo) do
     for key, value1 in pairs(foo) do
         if type(value) == "table" and type(bar[key]) == "table" then
         local value2 = bar[key]
            merged[key] = merge_tables(value, bar[key])
         if value2 then
         elseif type(value) == "string" and type(bar[key]) == "string" then
             merged_table[key] = value1 .. " ".. value2
             merged[key] = value .. " " .. bar[key]
         else
         else
             merged[key] = value or bar[key]
             merged_table[key] = value1
         end
         end
     end
     end
 
   
     for key, value in pairs(bar) do
     for key, value2 in pairs(bar) do
         if merged[key] == nil then
         if not merged_table[key] then
             merged[key] = value
             merged_table[key] = value2
         end
         end
     end
     end
   
    return merged_table
end


    return merged
end


function separate_word(term)
function separate_word(term)
     --[[local final_ret = nil
     local phonemic, phonetic, dialects = {}, {}, {}


     for word in gsplit(term, " ") do
     for word in gsplit(term, " ") do
         local pron = export.crux(word)
         m, t, d = export.crux(word)
          
          
         if final_ret == nil then
         if #phonemic > 0 then
             final_ret = pron
             phonemic, phonetic, dialects = {m}, {t}, d
         else
         else
final_ret = merge_tables(final_ret, pron)
        table.insert(phonemic, m)
        table.insert(phonetic, t)
        d = merge_tables(dialects, d)
         end
         end
     end]]
     end


     return export.crux(term) --final_ret
     return phonemic, phonetic, dialects
end
end


Line 312: Line 310:
     local term = args[1]
     local term = args[1]


     local ret = separate_word(term)
     local phonemic, phonetic, dialects = separate_word(term)
    if not ret then return "hay ret" end
    if not ret.phonemic then return "no hay phonemic" end
    if not ret.dialectal then return "no hay dialectal" end
      
      
     local IPA_args = {{pron = '/' .. ret.phonemic .. '/', a = "Standard Ravennese"}, {pron = '[' .. ret.phonetic .. ']'}}
     local IPA_args = {{pron = '/' .. phonemic .. '/', a = "Standard Ravennese"}, {pron = '[' .. phonetic .. ']'}}
     for key, value in pairs(ret.dialectal) do
     for key, value in pairs(dialects) do
     if value ~= ret.phonemic then
     if value ~= phonemic then
     table.insert(IPA_args, {pron = '[' .. value .. ']', a = sub(key, 1, 1), separator = "\n** "})
     table.insert(IPA_args, {pron = '[' .. value .. ']', a = sub(key, 1, 1), separator = "\n** "})
     end
     end