Module:Peter Bowman/odmiana

From Wikipedia

Documentation for this module may be created at Module:Peter Bowman/odmiana/doc

local p = {}

function p.czasownik_eo(frame)
    
    local tab = require "Module:Peter Bowman/odmiana/tabelki"
    local pframe = frame:getParent()
    local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
    local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
    
    local verbo, visible, class = args.verbo or config.verbo, args.visible, config.class

    return tab.tabla_eo(string.sub(verbo, 1, -2), visible, class)

end

function p.czasownik_es(frame)

    local lib_es = require "Module:Peter Bowman/odmiana/es"
    local pframe = frame:getParent()
    local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
    local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
    
    local verbo, modelo, notas, visible, participio = args.verbo or config.verbo, args.modelo, args.notas, args.visible, args.participio
    local class = config.class
        
    local subString = mw.ustring.sub -- usar en entornos wiki
    --local subString = string.sub

	--local solo_3_pers

	-- analiza el verbo y lo descompone en unidades más básicas
	local componentes, esPronominal, conj = lib_es.analizarCadena(verbo, modelo)

	-- no reconoce la conjugación
	if not conj then return 'Nieprawidlowa koncowka bezokolicznika: -ar/-er/-ir/-ír (-se)' end

	-- no existe el modelo
	if not lib_es.modelos[modelo] then return lib_es.mensaje(verbo) end

	-- si es pronominal, recorta el "-se" final
	verbo = esPronominal and subString(verbo, 1, -3) or verbo

	-- obtiene las formas verbales
	local formas, salida = lib_es.modelos[modelo](componentes, conj, modelo, verbo)

	-- EXCEPCIONES

	--[[ otras excepciones
	if verbo == "empecer" then
		defectivo = true
		formas.no_part = true
		solo_3_pers = true
		formas.notas = formas.notas..'<li>Brak imieslowów (<i>gerundio</i> i <i>participio</i>) i form zlozonych (<i>tiempos compuestos</i>)</li>'
	end]]

	-- verbos con excepciones y su modelo:
	-- placer (agradecer), satisfacer, contrahacer, rehacer (hacer), rehenchir (pedir), rehuir (construir)

	-- determina la presencia o no de alternancias consonánticas (g-j, g-gu...)
	local alt = (componentes.suf1 ~= "") and "„"..componentes.suf1.." – "..componentes.suf2.."”" or nil

	-- devuelve la tabla con la conjugación u otra salida especificada en la subrutina del modelo
	if salida then return salida
	else return lib_es.tabla.normal(formas, esPronominal, conj, modelo, notas, (visible == "si"), class, participio, alt) end
    
end

return p