Module:gd-art-len

local export = {}

function export._getParameters(frame_args, arg_list) local new_args = {}; local index = 1; local value; for _, arg in ipairs(arg_list) do		value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end

local function has_value (tab, val) for index, value in ipairs(tab) do       if value == val then return true end end

return false end

local function lenite_s(cluster) if string.len(cluster) == 1 then return cluster .. 'h'	else return cluster:sub(1, 1) .. 'h' .. cluster:sub(2, string.len(cluster)) end end

function export.show(frame) local new_args = export._getParameters(frame.args, { 'g', 'n', 'case', 'init' }); local gender = new_args['g'] or 'm'; local init_letters = new_args['init'] or ''; local case = new_args['case'] or 'nom'; local number = new_args['n'] or 'sg';

local vowels = { "a", "e", "i", "o", "u", "A", "E", "I", "O", "U", "à", "è", "ì", "ò", "ù", "À", "È", "Ì", "Ò", "Ù" };	local velars = { "c", "g", "C", "G" }; local dentals = { "t", "d", "l", "n", "r", "T", "D", "L", "N", "R" };	local labials = { "p", "b", "m", "P", "B", "M", "f", "F" }; local s_clusters = { "sa", "se", "si", "so", "su", "Sa", "Se", "Si", "So", "Su", "sà", "sè", "sì", "sò", "sù", "Sà", "Sè", "Sì", "Sò", "Sù", "sl", "sn", "sr", "Sl", "Sn", "Sr", "s", "S" };

if case == 'voc' then if has_value(velars, init_letters) or has_value(dentals, init_letters) or has_value(labials, init_letters) then return init_letters .. 'h'		elseif has_value(s_clusters, init_letters) then return lenite_s(init_letters) else return init_letters end end

if gender == 'm' then if number == 'sg' then if case == 'nom' then if has_value(vowels, init_letters) or init_letters == '' then return 't-' .. init_letters end return init_letters elseif case == 'gen' or case == 'dat' then if has_value(velars, init_letters) or has_value(labials, init_letters) then return init_letters .. 'h'				elseif has_value(s_clusters, init_letters) then return 't-' .. init_letters end return init_letters end elseif number == 'pl' then if case == 'nom' or case == 'dat' then if has_value(vowels, init_letters) or init_letters == '' then return 'h-' .. init_letters end return init_letters end return init_letters end elseif gender == 'f' then if number == 'sg' then if case == 'nom' or case == 'dat' then if has_value(velars, init_letters) or has_value(labials, init_letters) then return init_letters .. 'h'				elseif has_value(s_clusters, init_letters) then return 't-' .. init_letters end return init_letters elseif case == 'gen' then if has_value(vowels, init_letters) or init_letters == '' then return 'h-' .. init_letters end return init_letters end elseif number == 'pl' then if case == 'nom' or case == 'dat' then if has_value(vowels, init_letters) or init_letters == '' then return 'h-' .. init_letters end return init_letters end return init_letters end end

return init_letters end

return export