Moduł:forma verbal

Moduł wykorzystywany przez szablon {{forma verbal}}.


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, pron = {}
    
    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] = '<i>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] = '<i>([[:Kategoria:Regionalizmy hiszpańskie - Ameryka|Ameryka]], ' ..
        		'[[:Kategoria:Regionalizmy hiszpańskie - Wyspy Kanaryjskie|Kanary]] i ' ..
        		'[[:Kategoria:Regionalizmy hiszpańskie - Andaluzja|zach. Andaluzja]])</i> '
        end
        
        -- osoba
        if (osoba == "1") or (osoba == "pierwsza") then
            salida[#salida+1] = '<i>1.</i>'..(ns
                and '[[Kategoria:Formy czasowników hiszpańskich - pierwsza osoba]]' or '')
        elseif (osoba == "2") or (osoba == "druga") then
            salida[#salida+1] = '<i>2.</i>'..((ns and hiszpam ~= "tak")
                and '[[Kategoria:Formy czasowników hiszpańskich - druga osoba]]' or '')
        elseif (osoba == "3") or (osoba == "trzecia") then
            salida[#salida+1] = '<i>3.</i>'..(ns
                and '[[Kategoria: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] = ' '..frame:expandTemplate{ title = 'os' }..' '
        
        -- liczba
        if (liczba == "lp") or (liczba == "pojedyncza") then
            salida[#salida+1] = frame:expandTemplate{ title = 'lp' }
        elseif (liczba == "lm") or (liczba == "mnoga") then
            salida[#salida+1] = frame:expandTemplate{ title = '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|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|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|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
        else
            if (tryb == "imp") or (tryb == "imperativo") or (imieslow == "ger") or (imieslow == "gerundio") then
            else
                local title = mw.title.new(czasownik..'se', 0)
                if title.exists then
                    local cnt = title:getContent()
                    local init = string.find(cnt, "{{język hiszpański", 1, true)
                    if init then
                        local section = string.sub(cnt, init, (string.find(cnt, "\n== ", init, true)))
                        if string.find(section, "\n''czasownik zwrotny''\n", 1, true) then
                            salida[#salida+1] = '([['..czasownik..'se#es|se]])'
                        end
                    end
                end
            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