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 = {dialectal = {}}
local ret = {["dialectal"] = {}}
term = mw.ustring.lower(term)
term = mw.ustring.lower(term)
Line 242: Line 242:
phonetic = gsub(phonetic, rule[1], rule[2])
phonetic = gsub(phonetic, rule[1], rule[2])
upper = gsub(upper, rule[1], rule[2])
upper = gsub(upper, rule[1], rule[2])
bolognese = gsub(bolognese, rule[1], rule[2])
paulistan = gsub(paulistan, rule[1], rule[2])
end
end


Line 263: Line 265:
return ret
return ret
end
end
function merge_tables(foo, bar)
    local merged = {}
    for key, value in pairs(foo) do
        if type(value) == "table" and type(bar[key]) == "table" then
            merged[key] = merge_tables(value, bar[key])
        elseif type(value) == "string" and type(bar[key]) == "string" then
            merged[key] = value .. " " .. bar[key]
        else
            merged[key] = value or bar[key]
        end
    end
   
    for key, value in pairs(bar) do
        if merged[key] == nil then
            merged[key] = value
        end
    end
    return merged
end


function separate_word(term)
function separate_word(term)
local result = {}
    local final_ret = nil
 
for word in gsplit(term, " ") do
    for word in gsplit(term, " ") do
table.insert(result, export.crux(word))
        local pron = export.crux(word)
end
 
        if not final_ret then
return table.concat(result, " ")
            final_ret = pron
        else
            final_ret = merge_tables(final_ret, pron)
        end
    end
 
    return final_ret
end
end


function export.show(frame)
function export.show(frame)
local parent_args = frame:getParent().args
    local parent_args = frame:getParent().args
local params = {
    local params = {
[1] = { default = mw.title.getCurrentTitle().nsText == 'Template' and "aggiu" or mw.title.getCurrentTitle().text },
        [1] = { default = mw.title.getCurrentTitle().nsText == 'Template' and "aggiu" or mw.title.getCurrentTitle().text },
}
    }
local args = require("Module:parameters").process(parent_args, params)
    local args = require("Module:parameters").process(parent_args, params)
local term = args[1]
    local term = args[1]
 
    local ret = separate_word(term)


local IPA_args = {}
    -- Format the IPA output using the phonetic transcription
local pron = separate_word(term)
    local IPA_args = { { pron = '[' .. ret.dialectal.upper .. ']' } }
local phonetic = pron.upper --separate_word(term)
table.insert(IPA_args, {pron = '[' .. phonetic .. ']'})


return "* " .. m_IPA.format_IPA_full({lang = lang, items = IPA_args})
    return "* " .. m_IPA.format_IPA_full({ lang = lang, items = IPA_args })
end
end


return export
return export