Module:el-nouns-decl

Από Βικιλεξικό
Πήδηση στην πλοήγηση Πήδηση στην αναζήτηση

Θέματα και καταλήξεις

Για τις καταλήξεις των πτώσεων χρησιμοποιούνται οι εξής παράμετροι:

οε: ονομαστική ενικού
γε: γενική ενικού
γε2: γενική ενικού (2ος τύπος)
αε: αιτιατική ενικού
κε: κλητική ενικού - Αν λείπει τεκμαίρεται ότι είναι ίδια με την αιτ. εν.
κε0: κλητική ενικού (δύσχρηστη)
κε2: κλητική ενικού (δεύτερος τύπος)
οπ: ονομαστική πληθυντικού
οπ2: ονομαστική πληθυντικού (δεύτερος τύπος)
γπ: γενική πληθυντικού
γπ0: γενική πληθυντικού (δύσχρηστη)
γπ2: γενική πληθυντικού (2ος τύπος)
απ: αιτιατική πληθυντικού - Αν λείπει τεκμαίρεται ότι είναι ίδια με την ονομ. πλ
απ2: αιτιατική πληθυντικού (δεύτερος τύπος)
Η κλητική πληθυντικού θεωρείται ίδια με την ονομαστική, εκτός από την περίπτωση των θηλυκών σε -ος (διάμετρος).

Για τα θέματα χρησιμοποιούνται οι εξής αριθμοί:

  1. το θέμα που προκύπτει μετά την αφαίρεση της κατάληξης - Απαιτείται να το δηλώσουμε μόνο όταν καλούμε τη συνάρτηση klisi2
  2. αυτό που προκύπτει όταν αφαιρέσουμε τον τόνο από το #1 - Απαιτείται να το δηλώσουμε μόνο όταν καλούμε τη συνάρτηση klisi2
  3. αυτό που προκύπτει όταν τονίσουμε το τελευταίο φωνήεν του #2 - Είναι το μόνο που απαιτείται να το δηλώσουμε όταν καλούμε τη συνάρτηση klisi1
  • Όταν χρειάζεται να δώσουμε τον αριθμό του θέματος που αντιστοιχεί σε κάποια πτώση, χρησιμοποιούμε τις παραμέτρους οεθ, γεθ, γε2θ κ.ο.κ.

Συναρτήσεις κλίσεων

  • klisi1: Χρησιμοποιείται για τη μεγάλη πλειοψηφία των ουσιαστικών. Καλείται μόνο από άλλη συνάρτηση του module.
  • klisi2: Χρησιμοποιείται για ουδέτερα όπως το τσάι, παρόν, μέλλον, ον που εμφανίζουν ένα επιπλέον σύμφωνο (γ ή τ) στο τέλος του θέματος. Καλείται μόνο από άλλη συνάρτηση του module.
  • diametros: Καλείται μόνο από το πρότυπο {{el-κλίσ-'διάμετρος'}}.
  • klisi3: Δεν έχει φτιαχτεί ακόμα. Θα καλείται από εξωτερικά πρότυπα για ιδιαίτερες περιπτώσεις όπως το πυρ.

_module = {}


--σταθερές
bgcolor = 'd9ebff'
titlebgcolor = '#A1BDEA'
bordercolor = '#AAAACC'
kataliksicolor = 'DeepPink'

-- συναρτήσσεις και μεταβλητές που δεν μπορουν να κληθούν απέξω
-- χρωματισμός κατάληξης
function _xk(kataliksi)
    return '<font style="color:' .. kataliksicolor ..';">' .. kataliksi .. '</font>'
end

errorhere = function(errstring)
    return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα στο πρότυπο κλίσης]]'
end

exeikati = function(onearg)
	if onearg == nil then 
		return false 
	end
    return  (mw.ustring.len(onearg) > 0)
end

getargs = function (frame)
    local args = frame:getParent().args
    local title = mw.title.getCurrentTitle()
    local einaistons0 = title:inNamespace(0)
    args['string_errorinlemma'] = ''
    local haserror = false
    if einaistons0 then
        PAGENAME = title.text
        --αφαίρεση κενών στην αρχή και στο τέλος
         args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" )
    else --αλλιώς
        --αν έχει δόσει παράμετρο λήμμα
        if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
            --do nothing. lemma = args['λήμμα']
        else--αλλιώς εμφάνισε λάθος. Είναι σε άλλο χώρο και πρέπει να έχει παράμετρο.
        	--προφανώς θα θέλει λίγο προσοχή στα Πρότυπα όπου θα βγάζει λάθος αν δεν είναι includeonly
            args['string_errorinlemma'] = 'Σφάλμα! Δεν δόθηκε η παράμετρος λήμμα.'
        end
    end
    --πλέον θα υπάρχουν:
    ----args['string_errorinlemma'] :κενό αν δεν έχει βρει σφάλμα ή το μήνυμα του σφάλματος
    ----args['λήμμα'] :το λήμμα που θα "επεξεργαστούμε"
    return args 
end

-- set only if nil or empty
function fill_default(args, key, value)
	if args[key] == nil or args[key] == '' then args[key] = value end
	if args[key] == '-' then args[key] = '' end --special case to override default to empty, using '-'
end


atona = { ['Α'] = 'Ά', ['α'] = 'ά', ['ε'] = 'έ', ['Ε'] = 'Έ', 
        ['Η'] = 'Ή', ['η'] = 'ή', ['ι'] = 'Ί', ['ι'] = 'ί', ['ϊ'] = 'ΐ', 
        ['Ο'] = 'Ό', ['ο'] = 'ό', ['Υ'] = 'Ύ', ['υ'] = 'ύ', ['ϋ'] = 'ΰ', 
        ['Ω'] = 'Ώ', ['ω'] = 'ώ' }
tonismena = {
    ['Ά'] = 'Α',
    ['ά'] = 'α',
    ['Έ'] = 'Ε',
    ['έ'] = 'ε',
    ['Ή'] = 'Η',
    ['ή'] = 'η',
    ['Ί'] = 'Ι',
    ['ί'] = 'ι',
    ['ΐ'] = 'ϊ',
    ['Ό'] = 'Ο',
    ['ό'] = 'ο',
    ['Ύ'] = 'Υ',
    ['ύ'] = 'υ',
    ['ΰ'] = 'ϋ',
    ['Ώ'] = 'Ω',
    ['ώ'] = 'ω',
}
 
tonismena2 ={
    ['άι'] = 'αϊ',
    ['έι'] = 'εϊ',
    ['όι'] = 'οϊ',
    ['άυ'] = 'αϋ',
    ['έυ'] = 'εϋ',
    ['όυ'] = 'οϋ' 
}
    -- ['ύι'] = 'υϊ', δεν υπάρχει σε ουσιαστικά, μόνο στο επίθετο δρύινος. Αντίθετα, θα βάλει διαλυτικά
    -- στο βούισμα, βουίσματα

function _module.exeitono(anygreekstring)
    --για κάθε χαρακτήρα
    for codepoint in mw.ustring.gcodepoint( anygreekstring ) do
        --αντικατάστησέ τον με βάση τον πίνακα
        mychar = mw.ustring.char(codepoint)
        convertedchar = tonismena[mychar]            
        --αν βρήκε κάτι για αντικατάσταση
        --είναι δηλαδή τονισμένο γράμμα
        if convertedchar ~= nil then
            --βρήκα τονισμένο
            return true
        end
    end
    return false
end

function _module.removeaccent(stem)
    --για κάθε χαρακτήρα
    wordproduced = ''
    --για κάθε συνδυασμό γραμμάτων που μπορεί να χρειαστούν διαλυτικά
    for diplotonismeno, neatimh in pairs(tonismena2) do
        arxi, telos = mw.ustring.find(stem, diplotonismeno)
        if arxi ~= nil then
            wordproduced = mw.ustring.gsub(stem, diplotonismeno, neatimh, 1) --μια φορά αντικατάσταση
            --βρέθηκε ο τόνος και αφαιρέθηκε
            return wordproduced
        end        
    end
    for codepoint in mw.ustring.gcodepoint( stem ) do
        --αντικατάστησέ τον με βάση τον πίνακα
        mychar = mw.ustring.char(codepoint)
        convertedchar = tonismena[mychar]            
        --αν βρήκε κάτι για αντικατάσταση
        --είναι δηλαδή τονισμένο γράμμα
        if convertedchar ~= nil then
            --πρόσθεσέ το στη δημιουργούμενη κλείδα
            wordproduced = wordproduced .. convertedchar
        else
            --αλλιώς άσε το ίδιο
            wordproduced = wordproduced .. mychar        
        end
    end
    return wordproduced
end
 
-- Η συνάρτηση αρχίζει από το τελευταίο γράμμα του θέματος και πηγαίνει προς το πρώτο. 
-- Όταν συναντήσει το πρώτο (άτονο) φωνήεν, το τονίζει και τέλος
-- Εννοείται ότι η μεταβλητή stem δεν πρέπει να περιέχει τονισμένα φωνήεντα.
 
 
function _module.neostonos(stem)
    stempoint = mw.ustring.len(stem)
    wordproduced = ""
    while stempoint > 0 do
       mychar = mw.ustring.sub(stem, stempoint, stempoint)
       newchar = atona[mychar]
       if newchar ~= nil then
          if stempoint > 1 then
              return mw.ustring.sub(stem, 1, stempoint-1 ) .. newchar .. wordproduced
          else
              return newchar .. wordproduced
          end
       else
           wordproduced = mychar .. wordproduced
           stempoint = stempoint -1
       end
    end
    return wordproduced
end

--δεν μπορεί να κληθεί απέξω
fulltable2 = function (args)
    local stitlestr = ''
    local ptitlestr = ''
    local onomenstr = ''
    local onomplstr = ''
    local genenstr = ''
    local genplstr = ''
    local aitenstr = ''
    local aitplstr = ''
    local klenstr = ''
    local klplstr = ''
    local paratirisi = ''
    local hassingular = true --(args['εν'] ~= nil)
    if args['α'] == "πλ" then hassingular = false end
    local hasplural = true -- (args['πλ'] ~= nil)
    if args['α'] == "εν" then hasplural = false end
    if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then        
        --mw.log('para')
        paratirisi = '|-' .. "\n" .. [=[| colspan="4" align="left" style="background:#d9ebff; font-size: 90%; font-style: italic;" | ]=] 
        paratirisi = paratirisi .. args['παρατήρηση'] .. "\n"
    end 
--    if paratirisi == nil then paratirisi =
    if hassingular then
        stitlestr =  [=[! bgcolor="#A1BDEA" colspan="1" align="center"| '''''[[ενικός]]''''']=] .. "\n"
        onomenstr =  [=[| align="left" | ]=] .. args['οε'] ..  "\n"
        genenstr =  [=[| align="left" | ]=] .. args['γε'] ..  "\n"
        aitenstr =  [=[| align="left" | ]=] .. args['αε'] ..  "\n"
        klenstr =  [=[| align="left" | ]=] .. args['κε'] ..  "\n"
    end
    if hasplural then
        ptitlestr = [=[! bgcolor="#A1BDEA" colspan="1" align="center"| '''''[[πληθυντικός]]''''']=] .. "\n"
        onomplstr =  [=[| align="left" | ]=] .. args['οπ'] ..  "\n"
        genplstr =  [=[| align="left" | ]=] .. args['γπ'] ..  "\n"
        aitplstr =  [=[| align="left" | ]=] .. args['απ'] ..  "\n"
        klplstr =  [=[| align="left" | ]=] .. args['κπ'] ..  "\n"
    end
    if args['κλίση πτώση'] == nil then 	args['κλίση πτώση'] = 'πτώση' end
    return [=[{| style="float:right;border:1px solid #AAAACC;margin-left:0.5em;margin-bottom:0.5em;text-align:right;" rules="all" cellpadding="3" cellspacing="0"
|-
! bgcolor="#A1BDEA" | ]=].. args['κλίση πτώση'] .. "\n" .. stitlestr .. ptitlestr .. [=[|-
| bgcolor="#BED9ED" | '''''[[ονομαστική]]''''']=] .. "\n" .. onomenstr .. onomplstr .. [=[|-
| bgcolor="#BED9ED" | '''''[[γενική]]''''']=] .. "\n" .. genenstr .. genplstr .. [=[|-
| bgcolor="#BED9ED" | '''''[[αιτιατική]]''''']=] .. "\n" .. aitenstr .. aitplstr .. [=[|-
| bgcolor="#BED9ED" | '''''[[κλητική]]''''']=] .. "\n" .. klenstr .. klplstr .. paratirisi .. [=[|}]=] 
end

------------------
klisi1 = function(args)
    local lemma = ""
    --αν χρησιμοποιηθεί η getargs μπορεί να παρακαμφθεί το if
    --και το local lemma να γίνει args['λήμμα'] κατευθείαν
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local stemnumber = 0
    if args['α'] ~= "πλ" then
        stemnumber = tonumber(mw.ustring.len(args['οε']))
    else
        stemnumber = tonumber(mw.ustring.len(args['οπ']))
    end
    local stem = {}
    stem["1"] = mw.ustring.sub(lemma,1,-stemnumber-1)
    stem["2"] = _module.removeaccent(stem["1"])
    stem["3"] = _module.neostonos(stem["2"])
    
    for  i, ptwsi in ipairs({'οε', 'γε', 'γε2', 'αε', 'κε', 'κε2', 'κε0', 'οπ', 'οπ2', 'γπ', 'γπ0', 'γπ2', 'απ', 'απ2'}) do
       if args[ptwsi .. 'θ'] == nil then args[ptwsi .. 'θ'] = "1" end
    end
    for  i, ptwsi in ipairs({'γε', 'γε2', 'γπ', 'γπ0', 'γπ2'}) do
       if args[ptwsi] ~= nil then
          if _module.exeitono(args[ptwsi]) then args[ptwsi .. 'θ'] = "2" end
       end
    end
    if args['οπ'] == "άδες" then 
    args['οπθ'] = "2"
	args['απθ'] = "2"
    end
    if args['οπ2'] == "άδες" or args['οπ2'] == "αίοι" then 
	args['οπ2θ'] = "2"
	args['απ2θ'] = "2"
    end
    if args['απ'] == nil then 
       args['απ'] = args['οπ']
       args['απθ'] = args['οπθ']
    end
    if args['απ2'] == nil then
       args['απ2'] = args['οπ2']
       args['απθ2'] = args['οπθ2']
    end
    if args['κε'] == nil then args['κε'] = args['αε'] end

    args['οε'] = stem[args['οεθ']] .. _xk( args['οε'])
    -- Γενική ενικού
    if (args['γε'] == "-" or args['γε'] == "" or args['γε'] == nil) then
        args['γε'] = ""
    else
        args['γε'] = stem[args['γεθ']] .. _xk( args['γε'])
    end
    if args['γε2'] ~=nil and args['γε2'] ~= "" and args['γε2'] ~= "-" then
        args['γε2'] = "<br />& " .. stem[args['γε2θ']] .. _xk( args['γε2'])
    else 
        args['γε2'] = ''
    end
    args['γε'] = args['γε'] .. args['γε2']
    
    args['αε'] = stem[args['αεθ']] .. _xk( args['αε'])

    ----ΚΛΗΤΙΚΗ ΕΝΙΚΟΥ
    if args['κε0'] ~= nil then
        args['κε'] = '(' .. stem[args['κε0θ']] .. _xk( args['κε0']) .. ')'
    else
	args['κε'] = stem[args['κεθ']] .. _xk( args['κε'])
    end
    if args['κε2'] ~=nil and args['κε2'] ~= "" and args['κε2'] ~= "-" then
        args['κε2'] = "<br />" .. stem[args['κε2θ']] .. _xk( args['κε2']) .. '*'
    else
        args['κε2'] = ""
    end
    args['κε'] = args['κε'] .. args['κε2']

    --Ονομ. πληθ
    args['οπ'] = stem[args['οπθ']] .. _xk( args['οπ'])
    if args['οπ2'] ~=nil and args['οπ2'] ~= "" and args['οπ2'] ~= "-" then
        args['οπ2'] = "<br />& " .. stem[args['οπ2θ']] .. _xk( args['οπ2'])
    else
        args['οπ2'] = ''
    end
    args['οπ'] = args['οπ'] .. args['οπ2']
    args['κπ'] = args['οπ']

    --γενική πληθυντικού
    if (args['γπ'] == "-" or args['γπ'] == "" or args['γπ'] == nil) then
        args['γπ'] = ""
    else
        args['γπ'] = stem[args['γπθ']] .. _xk( args['γπ'])
    end
    if args['γπ0'] ~= nil then
        args['γπ'] = '(' .. stem[args['γπ0θ']] .. _xk( args['γπ0']) .. ')'
    end
    if args['γπ2'] ~=nil and args['γπ2'] ~= "" and args['γπ2'] ~= "-" then
        args['γπ2'] = stem[args['γπ2θ']] .. _xk( args['γπ2'])
        if args['γπ'] ~= "" then 
	        args['γπ2'] = "<br />& " .. args['γπ2']
	    end
    else
        args['γπ2'] = ""
    end
    args['γπ'] = args['γπ'] .. args['γπ2']

    --Αιτιατική πληθ.
    args['απ'] = stem[args['απθ']] .. _xk( args['απ'])
    if args['απ2'] ~=nil and args['απ2'] ~= "" and args['απ2'] ~= "-" then
        args['απ2'] = "<br />& " .. stem[args['απ2θ']] .. _xk( args['απ2'])
    else
        args['απ2'] = ''
    end
    args['απ'] = args['απ'] .. args['απ2']
 
    return fulltable2(args)
end

 
--κλίση ουδετέρων ουσιαστικών που παίρνουν επιπλέον σύμφωνο στο «θέμα», τσάι, προϊόν, μέλλον
klisi2 = function(args)
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end
    local stemnumber = 0
    if args['α'] ~= "πλ" then
        stemnumber = tonumber(mw.ustring.len(args['οε']))
    else
        stemnumber = tonumber(mw.ustring.len(args['οπ'])) +1
    end
    local stem = {}
    stem["1"] = mw.ustring.sub(lemma,1,-stemnumber-1)
    stem["2"] = _module.removeaccent(stem["1"])
    stem["3"] = _module.neostonos(stem["2"])
 
    args['οε'] = stem[args['οεθ']] .. _xk( args['οε'])
    args['γε'] = stem[args['γεθ']] .. args['πρόσφ'] .. _xk( args['γε'])
    args['αε'] = args['οε']
    args['κε'] = args['οε']
    args['οπ'] = stem[args['οπθ']] .. args['πρόσφ'] .. _xk( args['οπ'])
    args['γπ'] = stem[args['γπθ']] .. args['πρόσφ'] .. _xk( args['γπ'])
    args['απ'] = args['οπ']
    args['κπ'] = args['οπ']
 
    return fulltable2(args)
end

--Συναρτήσεις που παίρνουν παράμετρο το frame
--διάμετρος : μια ιδιαίτερη περίπτωση
_module.diametros = function(frame)
    local args = frame:getParent().args
    local lemma = ""
    if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
        lemma = args['λήμμα']
    else
        PAGENAME = mw.title.getCurrentTitle().text
        --αφαίρεση κενών στην αρχή και στο τέλος
        lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    end

    local stem1 = mw.ustring.sub(lemma,1,-3)
    local stem2 = _module.removeaccent(stem1)
    local stem3 = _module.neostonos(stem2)
    args['κλίση πτώση'] = 'πτώση'
    if mw.title.getCurrentTitle():inNamespace(0) then
    	args['πτώση κλίση'] = '<span title="κατά το διάμετρος" ><u>πτώση</u></span>'
    end
 
    args['οε'] = stem1 .. _xk("ος")
    args['γε'] = stem3 .. _xk("ου")
    args['αε'] = stem1 .. _xk("ο")
    args['κε'] = "(" .. stem1 .. _xk("ο") .. ")"
    args['οπ'] = stem1 .. _xk("οι") .. " (" .. stem1 .. _xk("ες") .. ")"
    args['γπ'] = stem3 .. _xk("ων")
    args['απ'] = stem3 .. _xk("ους") .. " (" .. stem1 .. _xk("ες") .. ")"
    args['κπ'] = stem1 .. _xk("οι")
 
    return frame:preprocess(fulltable2(args))
end
 
-- Εδώ αρχίζουν οι καταλήξεις των επιμέρους προτύπων

_module.afentis = function(frame)
    local args = frame:getParent().args
    args['κλίση πτώση'] = 'πτώση'
    if mw.title.getCurrentTitle():inNamespace(0) then
    	args['κλίση πτώση'] = '<abbr title="κατά το αφέντης" >πτώση</abbr>'
    end
    args['οε'] = "ης"
    args['γε'] = "η"
    args['αε'] = "η"
    args['οπ'] = "ες"
    args['γπ'] = "ών"
    args['οπ2'] = "άδες"
    args['γπ2'] = "άδων"
    args['απ2'] = "άδες"
    return frame:preprocess(klisi1(args))
end

_module.agonas = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ας"
    args['γε'] = "α"
    args['αε'] = "α"
    args['κε'] = "α"
    args['οπ'] = "ες"
    if args['γπ'] == nil then args['γπ'] = "ων" end
    args['απ'] = "ες"
    return frame:preprocess(klisi1(args))
end

_module.aguia = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ά"
    args['γε'] = "ᾶς"
    args['αε'] = "άν"
    args['κε'] = "ά"
    args['οπ'] = "αί"
    args['γπ'] = "ῶν"
    args['απ'] = "άς"
    return frame:preprocess(klisi1(args))
end
  
_module.ailouroeides = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ές"
    args['γε'] = "ούς"
    args['αε'] = "ές"
    args['οπ'] = "ή"
    args['γπ'] = "ών"
    return frame:preprocess(klisi1(args))
end

_module.alepou = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ού"
    args['γε'] = "ούς"
    args['αε'] = "ού"
    args['οπ'] = "ούδες"
    args['γπ'] = "ούδων"
    return frame:preprocess(klisi1(args))
end

_module.angelos = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ος"
    args['γε'] = "ου"
    args['αε'] = "ο"
    args['κε'] = "ε"
    args['οπ'] = "οι"
    args['γπ'] = "ων"
    args['απ'] = "ους"
    args['γεθ'] = "3"
    args['γπθ'] = "3"
    args['απθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.balomatis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ής"
    args['γε'] = "ή"
    args['αε'] = "ή"
    args['οπ'] = "ήδες"
    args['γπ'] = "ήδων"
    return frame:preprocess(klisi1(args))
end

_module.desimo = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ο"
    args['γε'] = "ατος"
    args['αε'] = "ο"
    args['οπ'] = "ατα"
    args['γπ'] = "άτων"
    args['γεθ'] = "3"
    args['οπθ'] = "3"
    args['απθ'] = "3"
    return frame:preprocess(klisi1(args))
end
 
_module.dromos = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ος"
    args['γε'] = "ου"
    args['αε'] = "ο"
    args['κε'] = "ε"
    args['οπ'] = "οι"
    args['γπ'] = "ων"
    args['απ'] = "ους"
    return frame:preprocess(klisi1(args))
end

_module.echo = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ώ"
    args['γε'] = "ώς"
    args['γε2'] = "ούς"
    args['αε'] = "ώ"
    args['οπ'] = "οί"
    args['απ'] = "ούς"
    args['α'] = "εν"
    return frame:preprocess(klisi1(args))
end

_module.edafos = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ος"
    args['γε'] = "ους"
    args['αε'] = "ος"
    args['οπ'] = "η"
    if args['γπ'] == nil then args['γπ'] = "ών" end
    args['γεθ'] = "3"
    args['οπθ'] = "3"
    args['απθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.elpida = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    args['οε'] = "α"
    args['γε'] = "ας"
    args['αε'] = "α"
    args['οπ'] = "ες"
    if arg2['πείνα'] == nil and args['γπ'] == nil then args['γπ'] = "ων" end
    return frame:preprocess(klisi1(args))
end

_module.erimos = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ος"
    args['γε'] = "ου"
    args['αε'] = "ο"
    args['κε0'] = "ο"
    args['οπ'] = "οι"
    args['γπ'] = "ων"
    args['απ'] = "ους"
    args['γεθ'] = "3"
    args['γπθ'] = "3"
    args['απθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.Froso = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ω"
    args['γε'] = "ως"
    args['αε'] = "ω"
    args['οπ'] = "ΧΧ"
    args['α'] = "εν"
    return frame:preprocess(klisi1(args))
end
 
_module.fylakas = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ας"
    args['γε'] = "α"
    args['αε'] = "α"
    args['οπ'] = "ες"
    args['γπ'] = "ων"
    args['γπθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.didactor = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ωρ"
    args['γε'] = "ορος"
    args['αε'] = "ορα"
    args['κε'] = "ορ"
    args['οπ'] = "ορες"
    args['γπ'] = "όρων"
    return frame:preprocess(klisi1(args))
end

_module.geros = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ος"
    args['γε'] = "ου"
    args['αε'] = "ο"
    args['οπ'] = "οι"
    args['γπ'] = "ων"
    args['απ'] = "ους"
    return frame:preprocess(klisi1(args))
end

_module.giagia = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ά"
    args['γε'] = "άς"
    args['αε'] = "ά"
    args['οπ'] = "άδες"
    args['γπ'] = "άδων"
    return frame:preprocess(klisi1(args))
end

_module.gyalakias = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ιας"
    args['γε'] = "ια"
    args['αε'] = "ια"
    args['οπ'] = "ηδες"
    if args['γπ'] == nil then args['γπ'] = "ηδων" end
    return frame:preprocess(klisi1(args))
end

_module.ippeas = function(frame)
    local args = frame:getParent().args
    args['οε'] = "έας"
    args['γε'] = "έα"
    args['αε'] = "έα"
    args['οπ'] = "είς"
    args['γπ'] = "έων"
    if args['2gen'] == "1" then args['γε2'] = "έως" end
    return frame:preprocess(klisi1(args))
end

_module.ischys = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ς"
    args['γε'] = "ος"
    args['αε'] = ""
    args['κε'] = ""
    args['οπ'] = "ες"
    args['γπ'] = "ων"
    args['απ'] = "ς"
    return frame:preprocess(klisi1(args))
end

_module.kafes = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ές"
    args['γε'] = "έ"
    args['αε'] = "έ"
    args['οπ'] = "έδες"
    args['γπ'] = "έδων"
    return frame:preprocess(klisi1(args))
end
 
_module.kardia = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ά"
    args['γε'] = "άς"
    args['αε'] = "ά"
    args['οπ'] = "ές"
    if args['γπ'] == nil then args['γπ'] = "ών" end
    return frame:preprocess(klisi1(args))
end
 
_module.kardinalios = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ος"
    args['γε'] = "ου"
    args['γε2'] = "ου"
    args['αε'] = "ο"
    args['κε'] = "ε"
    args['οπ'] = "οι"
    args['γπ'] = "ων"
    args['απ'] = "ους"
    args['γπ2'] = "ων"
    args['απ2'] = "ους"
    args['γεθ'] = "3"
    args['γπθ'] = "3"
    args['απθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.kontes = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ες"
    args['γε'] = "ε"
    args['αε'] = "ε"
    args['οπ'] = "ηδες"
    args['γπ'] = "ηδων"
    return frame:preprocess(klisi1(args))
end

_module.taxypous = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ους"
    args['γε'] = "οδος"
    args['αε'] = "οδα"
    args['κε'] = "ους"
    args['οπ'] = "οδες"
    args['γπ'] = "όδων"
    args['απ'] = "οδες"
    args['κπ'] = "οδες"    
    return frame:preprocess(klisi1(args))
end

_module.laxeiopolis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ης"
    args['γε'] = "η"
    args['αε'] = "η"
    args['οπ'] = "ες"
    if args['γπ'] == nil then args['γπ'] = "ών" end
    args['οπ2'] = "ηδες"
    args['γπ2'] = "ηδων"
    return frame:preprocess(klisi1(args))
end

_module.lysis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "η"
    args['γε'] = "ης"
    args['γε2'] = "εως"
    args['αε'] = "η"
    args['οπ'] = "εις"
    args['γπ'] = "εων"
    args['γε2θ'] = "3"
    args['οπθ'] = "3"
    args['γπθ'] = "3"
    return frame:preprocess(klisi1(args))
end
 
_module.manavis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ης"
    args['γε'] = "η"
    args['αε'] = "η"
    args['οπ'] = "ηδες"
    args['γπ'] = "ηδων"
    args['οπθ'] = "3"
    args['γπθ'] = "3"
    if args['2πλ'] == "1" then
        args['οπ2'] = "αίοι"
        args['γπ2'] = "αίων"
        args['απ2'] = "αίους"
        --TODO τσοπάνης -ηδες - αραίοι
        --if args['προσφ'] ~= nil then 
    end
    return frame:preprocess(klisi1(args))
end

_module.mili = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ι"
    args['γε'] = "ίου"
    args['αε'] = "ι"
    args['οπ'] = "ια"
    args['γπ'] = "ίων"
    return frame:preprocess(klisi1(args))
end

_module.naftis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ης"
    args['γε'] = "η"
    args['αε'] = "η"
    args['οπ'] = "ες"
    if args['γπ'] == nil then args['γπ'] = "ών" end
    return frame:preprocess(klisi1(args))
end

_module.niki = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    args['οε'] = "η"
    args['γε'] = "ης"
    args['αε'] = "η"
    args['οπ'] = "ες"
    args['γπ'] = "ών"
    if arg2['σκόνη'] ~= nil then args['γπ0'] = "ών" end
    if arg2['βιασύνη'] ~= nil then args['γπ0'] = "ων" end
    if arg2['επίθετο'] ~=nil then args['γπ'] = "ων" end
    if arg2['ζάχαρη'] ~= nil then args['γπ'] = nil end
    return frame:preprocess(klisi1(args))
end

_module.nikitis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ής"
    args['γε'] = "ή"
    args['αε'] = "ή"
    args['οπ'] = "ές"
    args['γπ'] = "ών"
    return frame:preprocess(klisi1(args))
end

_module.nota = function(frame)
    local args = frame:getParent().args
    args['οε'] = "α"
    args['γε'] = "ας"
    args['αε'] = "α"
    args['οπ'] = "ες"
    args['γπ0'] = "ών"
    return frame:preprocess(klisi1(args))
end
 
_module.onoma = function(frame)
    local args = frame:getParent().args
    args['οε'] = "α"
    args['γε'] = "ατος"
    args['αε'] = "α"
    args['οπ'] = "ατα"
    args['γπ'] = "άτων"
    args['γεθ'] = "3"
    args['οπθ'] = "3"
    return frame:preprocess(klisi1(args))
end
 
_module.ouranos = function(frame)
    local args = frame:getParent().args
    local arg2 = frame.args
    args['οε'] = "ός"
    args['γε'] = "ού"
    args['αε'] = "ό"
    if arg2['οδός'] == nil then
       if args['κε'] == nil then args['κε'] = "έ" end
    else
       args['κε0'] = "ό"
    end
    args['οπ'] = "οί"
    args['γπ'] = "ών"
    args['απ'] = "ούς"
    return frame:preprocess(klisi1(args))
end

_module.paidi = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ί"
    args['γε'] = "ιού"
    args['αε'] = "ί"
    args['οπ'] = "ιά"
    args['γπ'] = "ιών"
    return frame:preprocess(klisi1(args))
end

_module.paidaki = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ι"
    args['αε'] = "ι"
    args['οπ'] = "ια"
    return frame:preprocess(klisi1(args))
end

_module.pefko = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ο"
    args['γε'] = "ου"
    args['αε'] = "ο"
    args['οπ'] = "α"
    if args['γπ'] == nil then args['γπ'] = "ων" end
    return frame:preprocess(klisi1(args))
end

_module.pramateftis = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ής"
    args['γε'] = "ή"
    args['αε'] = "ή"
    args['οπ'] = "ές"
    args['γπ'] = "ών"
    args['οπ2'] = "άδες"
    args['γπ2'] = "άδων"
    return frame:preprocess(klisi1(args))
end

_module.prosopo = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ο"
    args['γε'] = "ου"
    args['αε'] = "ο"
    args['οπ'] = "α"
    args['γπ'] = "ων"
    args['γεθ'] = "3"
    args['γπθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.provato = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ο"
    args['γε'] = "ου"
    args['γε2'] = "ου"
    args['αε'] = "ο"
    args['οπ'] = "α"
    args['γπ'] = "ων"
    args['γπ2'] = "ων"
    args['γεθ'] = "3"
    args['γπθ'] = "3"
    return frame:preprocess(klisi1(args))
end

_module.psychi = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ή"
    args['γε'] = "ής"
    args['αε'] = "ή"
    args['οπ'] = "ές"
    if args['γπ'] == nil then args['γπ'] = "ών" end
    return frame:preprocess(klisi1(args))
end

_module.rigas = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ας"
    args['γε'] = "α"
    args['αε'] = "α"
    args['οπ'] = "άδες"
    args['γπ'] = "άδων"
    return frame:preprocess(klisi1(args))
end

_module.Rinio = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ώ"
    args['γε'] = "ώς"
    args['αε'] = "ώ"
    args['οπ'] = "XX"
    args['α'] = "εν"
    return frame:preprocess(klisi1(args))
end
 
_module.salpinga = function(frame)
    local args = frame:getParent().args
    args['οε'] = "α"
    args['γε'] = "ας"
    args['αε'] = "α"
    args['οπ'] = "ες"
    args['γπ'] = "ων"
    args['γπθ'] = "3"
    if args['2gen'] == "1" then args['γπ2'] = "ων"
    end
    return frame:preprocess(klisi1(args))
end

_module.sfoungaras = function(frame)
    local args = frame:getParent().args
    args['οε'] = "άς"
    args['γε'] = "ά"
    args['αε'] = "ά"
    args['οπ'] = "άδες"
    args['γπ'] = "άδων"
    return frame:preprocess(klisi1(args))
end

_module.tamias = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ας"
    args['γε'] = "α"
    args['αε'] = "α"
    args['οπ'] = "ες"
    args['γπ'] = "ών"
    return frame:preprocess(klisi1(args))
end

_module.teras = function(frame)
    local args = frame:getParent().args
    fill_default(args, 'οε', "ας")
    fill_default(args, 'γε', "ατος")
    fill_default(args, 'αε', "ας")
    fill_default(args, 'οπ', "ατα")
    fill_default(args, 'γπ', "άτων")
    return frame:preprocess(klisi1(args))
end

_module.thalassa = function(frame)
    local args = frame:getParent().args
    args['οε'] = "α"
    args['γε'] = "ας"
    args['αε'] = "α"
    args['οπ'] = "ες"
    args['γπ'] = "ών"
    return frame:preprocess(klisi1(args))
end

_module.tragoudi = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ι"
    args['γε'] = "ιού"
    args['αε'] = "ι"
    args['οπ'] = "ια"
    args['γπ'] = "ιών"
    return frame:preprocess(klisi1(args))
end

_module.vouno = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ό"
    args['γε'] = "ού"
    args['αε'] = "ό"
    args['οπ'] = "ά"
    args['γπ'] = "ών"
    return frame:preprocess(klisi1(args))
end

-- με πρόσθετο σύμφωνο γ ή τ
_module.tsai = function(frame)
    local args = frame:getParent().args
    args['οε'] = "ι"
    args['γε'] = "ιού"
    args['οπ'] = "ια"
    args['γπ'] = "ιών"
    args['οεθ'] = "1"
    args['γεθ'] = "2"
    args['οπθ'] = "1"
    args['γπθ'] = "2"
    args['πρόσφ'] ="γ"
    return frame:preprocess(klisi2(args))
end

_module.paron = function(frame)
    local args = frame:getParent().args
    args['οε'] = ""
    args['γε'] = "ος"
    args['οπ'] = "α"
    args['γπ'] = "ων"
    args['οεθ'] = "1"
    args['γεθ'] = "1"
    args['οπθ'] = "1"
    args['γπθ'] = "1"
    args['πρόσφ'] ="τ"
    return frame:preprocess(klisi2(args))
end

_module.mellon = function(frame)
    local args = frame:getParent().args
    args['οε'] = ""
    args['γε'] = "ος"
    args['οπ'] = "α"
    args['γπ'] = "ων"
    args['οεθ'] = "1"
    args['γεθ'] = "1"
    args['οπθ'] = "1"
    args['γπθ'] = "3"
    args['πρόσφ'] ="τ"
    return frame:preprocess(klisi2(args))
end

_module.on = function(frame)
    local args = frame:getParent().args
    args['οε'] = ""
    args['γε'] = "ος"
    args['οπ'] = "α"
    args['γπ'] = "ων"
    args['οεθ'] = "1"
    args['γεθ'] = "3"
    args['οπθ'] = "3"
    args['γπθ'] = "3"
    args['πρόσφ'] ="τ"
    return frame:preprocess(klisi2(args))
end

_module['ιππέας'] = function(frame)
    local args = getargs(frame) 
    if exeikati(args['string_errorinlemma']) then return frame:preprocess(errorhere(args['string_errorinlemma'])) end
    args['οε'] = "έας"
    args['γε'] = "έα"
    args['αε'] = "έα"
    args['οπ'] = "είς"
    args['γπ'] = "έων"
    if args['2gen'] == "1" then args['γε2'] = "έως" end
    return frame:preprocess(klisi1(args))
end

return _module