Модуль:сущ eo

Материал из Викисловаря
Документация
local p = {}

function p.get_description( frame )
	local new_args = p._getParameters( frame.args, {'s'} )
    local s = new_args['s'] or ''
	local l = string.len(s)
	
	local language_m = require( "Module:language" )
	local lang = language_m.get({args={ lang='eo', param='Name'}})
	local base
	local base_page

	local s_end = string.sub(s, l-2, l)
	if s_end == 'ojn' then
		base = string.sub(s, 0, l-2)
		base_page = '[[' .. base .. '#' .. lang .. '|' .. base .. ']]'
		return 'Форма множественного числа, винительного падежа существительного ' .. base_page .. '.'
	end

	local s_end = string.sub(s, l-1, l)
	if s_end == 'oj' then
		base = string.sub(s, 0, l-1)
		base_page = '[[' .. base .. '#' .. lang .. '|' .. base .. ']]'
		return 'Форма множественного числа, именительного падежа существительного ' .. base_page .. '.'
	elseif s_end == 'on' then
		base = string.sub(s, 0, l-1)
		base_page = '[[' .. base .. '#' .. lang .. '|' .. base .. ']]'
		return 'Форма единственного числа, винительного падежа существительного ' .. base_page .. '.'
	end
	
	local s_end = string.sub(s, l, l)
	if s_end == 'o' then
		base_page = '[[' .. s .. '#' .. lang .. '|' .. s .. ']]'
		return 'Форма единственного числа, именительного падежа существительного ' .. base_page .. '.'
	end
	
    return ''
end

function p.poetic_elision(frame)
	local result;
	local new_args = p._getParameters( frame.args, {'s'} );
    local s = new_args['s'] or '';
	local l = string.len(s);

	local s_end = string.sub(s, l, l);
	local l_end = string.len(s_end);
	if s_end == 'o' and l > 1 then
		result = string.sub(s, 0, l-l_end) .. "'";
	else
		result = '-';
	end

    return result;
end
 
function p._getParameters( frame_args, arg_list )
    local new_args = {};
    local index = 1;
    local value;
 
    for i,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  
 
return p