Jump to content

Module:Peter Bowman/forma-verbal

Unchecked
From Wikipedia

Documentation for this module may be created at Module:Peter Bowman/forma-verbal/doc

local p = { main = function(frame)
    
    local pframe = frame:getParent()
    local args = pframe.args
    
    local czasownik, imieslow, osoba, liczba, czas, tryb = args.czasownik, args["imiesłów"], args.osoba, args.liczba, args.czas, args.tryb
    local forma_zenska, liczba_mnoga, voseo, hiszpam, _3os = args["forma żeńska"], args["liczba mnoga"], args.voseo, args.hiszpam, args["3os"]
    
    local title = mw.title.getCurrentTitle()
    local ns = title:inNamespace(0)
    local forma = ns and title.text or args.forma
    
    local salida = {}
    
    if imieslow then
        
        if (imieslow == "ger") or (imieslow == "gerundio") then
            salida[#salida+1] = '<i>imiesłów czynny ([[gerundio#es|gerundio]])</i>'..(ns
                and '[[Kategoria:Formy czasowników hiszpańskich - imiesłów czynny]]' or '')
        elseif (imieslow == "part") or (imieslow == "participio") then
            
            if (forma_zenska == "tak") and (liczba_mnoga == "tak") then
                salida[#salida+1] = '<i>forma żeńska liczby mnogiej imiesłowu biernego'
            elseif forma_zenska == "tak" then
                salida[#salida+1] = '<i>forma żeńska imiesłowu biernego'
            elseif liczba_mnoga == "tak" then
                salida[#salida+1] = 'liczba mnoga imiesłowu biernego'
            else salida[#salida+1] = '<i>imiesłów bierny' end
            
            salida[#salida+1] = ' ([[participio#es|participio]])</i>'..(ns
                and '[[Kategoria:Formy czasowników hiszpańskich - imiesłów bierny]]' or '')
        else
            salida[#salida+1] = '<b>błąd w parametrze "imiesłów", wybierz: "participio", "gerundio"</b>'..(ns
                and '[[Kategoria:forma verbal/błędy]]' or '')
        end
        
    else
        
        if hiszpam == "tak" then salida[#salida+1] = '{{hiszpam}} ' end
        
        -- osoba
        if (osoba == "1") or (osoba == "pierwsza") then
            salida[#salida+1] = '<i>1.</i>'..(ns
                and '[[Formy czasowników hiszpańskich - pierwsza osoba]]' or '')
        elseif (osoba == "2") or (osoba == "druga") then
            salida[#salida+1] = '<i>2.</i>'..(ns
                and '[[Formy czasowników hiszpańskich - druga osoba]]' or '')
        elseif (osoba == "3") or (osoba == "trzecia") then
            salida[#salida+1] = '<i>3.</i>'..(ns
                and '[[Formy czasowników hiszpańskich - trzecia osoba]]' or '')
        else
            salida[#salida+1] = '<b>błąd w parametrze "osoba", wybierz: "pierwsza", "druga", "trzecia"</b>'..(ns
                and '[[Kategoria:forma verbal/błędy]]' or '')
        end
        
        salida[#salida+1] = ' {{os}} '
        
        -- liczba
        if (liczba == "lp") or (liczba == "pojedyncza") then
            salida[#salida+1] = '{{lp}}'
        elseif (liczba == "lm") or (liczba == "mnoga") then
            salida[#salida+1] = '{{lm}}'
        else
            salida[#salida+1] = '<b> błąd w parametrze "liczba", wybierz: "pojedyncza", "mnoga"</b>'..(ns
                and '[[Kategoria:forma verbal/błędy]]' or '')
        end
        
        -- zaimki
        if ((osoba == "1") and (liczba == "lp")) or ((osoba == "1") and (liczba == "pojedyncza"))
        or ((osoba == "pierwsza") and (liczba == "lp")) or ((osoba == "pierwsza") and (liczba == "pojedyncza")) then
            salida[#salida+1] = '<i> ([[yo#es|yo]])</i>'
            pron = '[[me#es|me]]'
            
        elseif ((osoba == "2") and (liczba == "lp")) or ((osoba == "2") and (liczba == "pojedyncza"))
        or ((osoba == "druga") and (liczba == "lp")) or ((osoba == "druga") and (liczba == "pojedyncza")) then
            if voseo == "tak" then salida[#salida+1] = '<i> ([[vos#es|vos]])</i>'
            else salida[#salida+1] = '<i> ([[tú#es|tú]])</i>' end
            pron = '[[te#es|te]]'
            
        elseif ((osoba == "3") and (liczba == "lp")) or ((osoba == "3") and (liczba == "pojedyncza"))
        or ((osoba == "trzecia") and (liczba == "lp")) or ((osoba == "trzecia") and (liczba == "pojedyncza")) then
            if _3os then -- forma trzecioosobowa
            else
                if (tryb == "imp") or (tryb == "imperativo") then salida[#salida+1] = '<i> ([[usted#es|usted]])</i>'
                else salida[#salida+1] = '<i> ([[él#es|él]], [[ella#es|ella]], [[usted#es|usted]])</i>' end
            end
            pron = '[[se#es|se]]'
            
        elseif ((osoba == "1") and (liczba == "lm")) or ((osoba == "1") and (liczba == "mnoga"))
        or ((osoba == "pierwsza") and (liczba == "lm")) or ((osoba == "pierwsza") and (liczba == "mnoga")) then
            salida[#salida+1] = '<i> ([[nosotros#es|nosotros]]/[[nosotras#es|as]])</i>'
            pron = '[[nos#es|nos]]'
        
        elseif ((osoba == "2") and (liczba == "lm")) or ((osoba == "2") and (liczba == "mnoga"))
        or ((osoba == "druga") and (liczba == "lm")) or ((osoba == "druga") and (liczba == "mnoga")) then
            if hiszpam == "tak" then
                salida[#salida+1] = '<i> ([[ustedes#es|ustedes]])</i>'
                pron = '[[se#es|se]]'
            else
                salida[#salida+1] = '<i> ([[vosotros#es|vosotros]]/[[vosotras#es|as]])</i>'
                pron = '[[os#es|os]]'
            end
        
        elseif ((osoba == "3") and (liczba == "lm")) or ((osoba == "3") and (liczba == "mnoga"))
        or ((osoba == "trzecia") and (liczba == "lm")) or ((osoba == "trzecia") and (liczba == "mnoga")) then
            if _3os then -- forma trzecioosobowa
            else
                if (hiszpam == "tak") or (tryb == "imperativo") then salida[#salida+1] = '<i> ([[ustedes#es|ustedes]])</i>'
                else salida[#salida+1] = '<i> ([[ellos#es|ellos]]/[[ellas#es|as]], [[ustedes#es|ustedes]])</i>' end
            end
            pron = '[[se#es|se]]'
            
        end
        
        -- tryby i czasy
        if (tryb == "ind") or (tryb == "indicativo") then
            
            if (czas == "pres") or (czas == "presente") then
                salida[#salida+1] = '<i> czasu teraźniejszego ([[presente#es|presente]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - presente de indicativo]]' or '')
            elseif (czas == "pi") or (czas == "pret. imperfecto") then
                salida[#salida+1] = '<i> czasu przeszłego prostego ([[pretérito imperfecto#es|pretérito imperfecto]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - pretérito imperfecto de indicativo]]' or '')
            elseif (czas == "pps") or (czas == "pret. perfecto simple") then
                salida[#salida+1] = '<i> czasu przeszłego prostego ([[pretérito perfecto simple#es|pretérito perfecto simple]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - pretérito perfecto simple de indicativo]]' or '')
            elseif (czas == "fut") or (czas == "futuro") then
                salida[#salida+1] = '<i> czasu przyszłego prostego ([[futuro simple#es|futuro simple]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - futuro de indicativo]]' or '')
            elseif (czas == "cond") or (czas == "condicional") then
                salida[#salida+1] = '<i> czasu przypuszczającego prostego ([[condicional simple#es|condicional simple]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - condicional de indicativo]]' or '')
            else
                salida[#salida+1] = '<b> błąd w parametrze "czas", sprawdź nazewnictwo na [[Szablon:forma verbal|stronie szablonu]]</b>'..(ns
                    and '[[Kategoria:forma verbal/błędy]]' or '')
            end
            
            salida[#salida+1] = '<i> trybu oznajmującego ([[modo indicativo#es|modo indicativo]])</i>'..(ns
                and '[[Kategoria:Formy czasowników hiszpańskich - tryb oznajmujący]]' or '')
            
        elseif (tryb == "sub") or (tryb == "subj") or (tryb == "subjuntivo") then
            
            if (czas == "pres") or (czas == "presente") then
                salida[#salida+1] = '<i> czasu teraźniejszego ([[presente#es|presente]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - presente de subjuntivo]]' or '')
            elseif (czas == "pi1") or (czas == "pret. imperfecto I") then
                salida[#salida+1] = '<i> czasu przeszłego prostego (I) ([[pretérito imperfecto#es|pretérito imperfecto]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - pretérito imperfecto de subjuntivo (-ra-)]]' or '')
            elseif (czas == "pi2") or (czas == "pret. imperfecto II") then
                salida[#salida+1] = '<i> czasu przeszłego prostego (II) ([[pretérito imperfecto#es|pretérito imperfecto]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - pretérito imperfecto de subjuntivo (-se-)]]' or '')
            elseif (czas == "fut") or (czas == "futuro") then
                salida[#salida+1] = '<i> czasu przyszłego prostego ([[futuro simple#es|futuro simple]])</i>'..(ns
                    and '[[Kategoria:Formy czasowników hiszpańskich - futuro de subjuntivo]]' or '')
            else
                salida[#salida+1] = '<b> błąd w parametrze "czas", sprawdź nazewnictwo na [[Szablon:forma verbal|stronie szablonu]]</b>'..(ns
                    and '[[Kategoria:forma verbal/błędy]]' or '')
            end
            
            salida[#salida+1] = '<i> trybu łączącego ([[modo subjuntivo#es|modo subjuntivo]])</i>'..(ns
                and '[[Kategoria:Formy czasowników hiszpańskich - tryb łączący]]' or '')
            
        elseif (tryb == "imp") or (tryb == "imperativo") then
            
            salida[#salida+1] = '<i> trybu rozkazującego ([[modo imperativo#es|modo imperativo]])</i>'
            
            if ns and (not hiszpam) and ((osoba == "2") or (osoba == "druga")) then
                salida[#salida+1] = '[[Kategoria:Formy czasowników hiszpańskich - tryb rozkazujący]]' end
            
        else
            salida[#salida+1] = '<b> błąd w parametrze "tryb", wybierz: "indicativo", "subjuntivo", "imperativo"</b>'..(ns
                and '[[Kategoria:forma verbal/błędy]]' or '')
        end
        
    end
    
    if czasownik then
        
        salida[#salida+1] = '<i> od  </i>[['..czasownik..'#es|'..czasownik..']]'
        
        if string.sub(czasownik, -2, -1) == "se" then
            if imieslow or (tryb == "imp") or (tryb == "imperativo") then -- imiesłów lub zbitka z zaimkiem enklitycznym
            else salida[#salida+1] = ' – '..pron..' '..forma end
        end
    
    else
        salida[#salida+1] = '<b> brak parametru "czasownik"</b>'..(ns and '[[Kategoria:forma verbal/błędy]]' or '')
    end
    
    return table.concat(salida)
    
end }

return p