Module:table-el-adj1
Documentation for this module may be created at Module:table-el-adj1/τεκμηρίωση
--[=[ πίνακες κλίσης επιθέτων στα ελληνικά - greek adjectives declension
by Flyax, 2013
2019.11.25. links με linkcontrol των χρωματισμών θέματος-κατάληξης
ΠΡΟΒΛΗΜΑΤΑ:
Γιατί δεν λειτουργεί το p['ελαστικός'] [[Πρότυπο:el-κλίσ-'ελαστικός']]
βγάζει λάθος στο _xk
Γιατί τα functions έχουν διαφορετικό τρόπο ονομασίας?
Γιατί το [[Module:la-nouns-decl]] είναι γραμμένο διαφορετικά?
Εκκρεμότητες:
* μετονομασία και μεταφορά στο Module:κλίση/el/επίθετο? ή el-adj-decl
* κλιτικά μοντέλα custom (κάθε πτώση, με δυνατότητα: 2ο τύπο, τύπο σε παρένθεση και παύλα)
* κλιτικό μοντέλο όπου υπάρχει διπλή κλητική κεΑ (κεΑ0) όπως συνεχή(ς)
]=]--
_p = {}
--χρώματα
sidebgcolor = '#BED9ED'
titlebgcolor = '#A1BDEA'
bordercolor = '#AAAACC'
kataliksicolor = 'DeepPink'
stemcolor = '#002000'
-- χρωματισμός κατάληξης
function _xk(kataliksi)
return '<span style="color:' .. kataliksicolor ..'; font-weight:normal;">' .. kataliksi .. '</span>'
end
-- χρωματισμός θέματος
function _xs(stem)
return '<span style="color:' .. stemcolor ..'; font-weight:normal;">' .. stem .. '</span>'
end
-- δημιουργία συνδέσμων - create links
function _create_link(page, text)
if text then
return '[[' .. page .. '|' .. text .. ']]'
else
return '[[' .. page .. ']]'
end
end
-- ελέγχει χρώμα συνδέσμου θέμα+κατάληξη - controls link-colour stem+ending
function _linkcontrol(stem, kataliksi)
return _create_link(stem .. kataliksi, _xs(stem) .. _xk(kataliksi))
end
exeikati = function(onearg)
if onearg == nil then
return false
end
return (mw.ustring.len(onearg) > 0)
end
fulltable2 = function (args)
local remarkstr = '\n'
local paratirisi = ''
if exeikati (args['παρατήρηση']) then
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 =
return [=[{| style="float:right;border:1px solid ]=] ..bordercolor .. [=[;margin-left:0.5em;margin-bottom:0.5em;text-align:center;" rules="all" cellpadding="3" cellspacing="0"
! bgcolor=]=] .. titlebgcolor .. [=[| '''''[[πτώση]]'''''
! bgcolor=]=] .. titlebgcolor .. [=[ colspan="3" | '''''[[ενικός]]'''''
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[ονομαστική]]'''''
| align="left" |]=] .. args['οεΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['οεΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['οεΟ'] .. '\n' .. [=[
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[γενική]]'''''
| align="left" |]=] .. args['γεΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['γεΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['γεΟ'] .. '\n' .. [=[
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[αιτιατική]]'''''
| align="left" |]=] .. args['αεΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['αεΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['οεΟ'] .. '\n' .. [=[
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[κλητική]]'''''
| align="left" |]=] .. args['κεΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['κεΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['κεΟ'] .. '\n' .. [=[
|-
! bgcolor=]=] .. titlebgcolor .. [=[ | '''''[[πτώση]]'''''
! bgcolor=]=] .. titlebgcolor .. [=[ colspan="3" | '''''[[πληθυντικός]]'''''
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[ονομαστική]]'''''
| align="left" |]=] .. args['οπΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['οπΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['οπΟ'] .. '\n' .. [=[
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[γενική]]'''''
| align="left" |]=] .. args['γπΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['γπΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['γπΟ'] .. '\n' .. [=[
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[αιτιατική]]'''''
| align="left" |]=] .. args['απΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['απΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['οπΟ'] .. '\n' .. [=[
|-
| bgcolor=]=] .. sidebgcolor .. [=[ | '''''[[κλητική]]'''''
| align="left" |]=] .. args['κπΑ'] .. '\n' .. [=[
| align="left" |]=] .. args['κπΘ'] .. '\n' .. [=[
| align="left" |]=] .. args['κπΟ'] .. '\n' .. paratirisi .. [=[
|}]=]
end
-- @param
-- 'θέμα1' : το θέμα
-- 'οεΑ' : ονομαστική του ενικού του αρσενικού (ή μόνο η κατάληξη)
-- 'γεΘ' : γενική του ενικού του θηλυκού(ή μόνο η κατάληξη)
-- 'οεΟ' : ονομαστική, αιτιατική κ' κλητική του ενικού του ουδετέρου (ή μόνο η κατάληξη)
-- κλπ........
-- 'γεΘ2' : δεύτερη γενική του ενικού του θηλυκού(ή μόνο η κατάληξη)
-- 'γπΘ0' : όμοιο με το γπΘ αλλά θα τεθεί σε παρένθεση
-- αν υπάρχει παράμετρος "θέμα1" τότε
-- οι παράμετροι περιέχουν μόνο τις καταλήξεις
-- οπότε προσθέτουμε και το θέμα1
function _p.klisi2with1stem(frame)
local args = frame.args
if not ((args['θέμα1'] ~= nil) or (args['θέμα1'] ~='')) then
args['οεΑ'] = _linkcontrol(args['θέμα1'], args['οεΑ'])
args['γεΑ'] = _linkcontrol(args['θέμα1'], args['γεΑ'])
args['αεΑ'] = _linkcontrol(args['θέμα1'], args['αεΑ'])
args['κεΑ'] = _linkcontrol(args['θέμα1'], args['κεΑ'])
args['οπΑ'] = _linkcontrol(args['θέμα1'], args['οπΑ'])
args['γπΑ'] = _linkcontrol(args['θέμα1'], args['γπΑ'])
args['απΑ'] = _linkcontrol(args['θέμα1'], args['απΑ'])
args['κπΑ'] = _linkcontrol(args['θέμα1'], args['κπΑ'])
args['οεΘ'] = _linkcontrol(args['θέμα1'], args['οεΘ'])
args['γεΘ'] = _linkcontrol(args['θέμα1'], args['γεΘ'])
args['αεΘ'] = _linkcontrol(args['θέμα1'], args['αεΘ'])
args['κεΘ'] = _linkcontrol(args['θέμα1'], args['κεΘ'])
args['οπΘ'] = _linkcontrol(args['θέμα1'], args['οπΘ'])
args['γπΘ'] = _linkcontrol(args['θέμα1'], args['γπΘ'])
args['απΘ'] = _linkcontrol(args['θέμα1'], args['απΘ'])
args['κπΘ'] = _linkcontrol(args['θέμα1'], args['κπΘ'])
args['οεΟ'] = _linkcontrol(args['θέμα1'], args['οεΟ'])
args['γεΟ'] = _linkcontrol(args['θέμα1'], args['γεΟ'])
args['οπΟ'] = _linkcontrol(args['θέμα1'], args['οπΟ'])
args['γπΟ'] = _linkcontrol(args['θέμα1'], args['γπΟ'])
end
-- TODO is preprocess necessary?
return frame:preprocess(fulltable2(args))
end
-- παράμετρος 'θέμα'
--είτε αριθμητική (1,2,3 κλπ), οπότε αφαιρεί τόσους χαρακτήρες από τον τίτλο του λήμματος
--είτε το θέμα που θα χρησιμοποιηθεί
--
--για τις περιπτώσεις που χρειάζεται και δεύτερο θέμα
--θα χρησιμοποιηθεί άλλη συνάρτηση οπότε εδώ μας είναι αδιάφορο
function _p.klisi1(frame)
local args = frame.args
local lemmaargs = frame:getParent().args
PAGENAME = mw.title.getCurrentTitle().text
local lemma = PAGENAME:match( "^%s*(.-)%s*$" )
args['παρατήρηση'] = lemmaargs['παρατήρηση']
if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
lemma = args['λήμμα']
else
PAGENAME = mw.title.getCurrentTitle().text
--αφαίρεση κενών στην αρχή και στο τέλος
lemma = PAGENAME:match( "^%s*(.-)%s*$" )
end
--αν έχει παράμετρο θέμα
if not exeikati(args['θέμα']) then
--δεν έχει στείλει παράμετρο θέμα
--στα ελληνικά επίθετα, στο αρσενικό όλα έχουν σαν κατάληξη 2 γράμματα
args['useasstem'] = mw.ustring.sub(lemma,1,-3)
--πάντως το args['useasstem'] είναι nil εδώ
else
--βρες αν είναι αριθμός
local stemnumber = tonumber(args['θέμα'])
--είναι αριθμητική αν δεν είναι nil
--(απίθανο) πρόβλημα αν το θέμα ξεκινάει από αριθμό
if stemnumber ~= nil then
--βρες το θέμα αφαιρώντας τόσους χαρακτήρες όσους λέει η παράμετρος
--και ακόμα μία
args['useasstem'] = mw.ustring.sub(lemma,1,-stemnumber-1)
else
--αλλιώς χρησιμοποίησε σαν θέμα την παράμετρο 'θέμα'
args['useasstem'] = args['θέμα']
end
end
--αν βρήκαμε θέμα...
--αλλιώς στέλνει μόνο τα οε,γε κλπ
args['καισεΑ'] = (lemmaargs[1] == 'καισεΑ')
args['καισεΙΑ'] = (lemmaargs[1] == 'καισεΙΑ')
args['καισε-ια'] = (lemmaargs[1] == 'καισε-ια')
if exeikati(args['useasstem']) then
args['οεΑ'] = _linkcontrol(args['useasstem'], args['οεΑ'])
args['γεΑ'] = _linkcontrol(args['useasstem'], args['γεΑ'])
if args['γεΑ2'] ~= nil then
args['γεΑ'] = args['γεΑ'] .. "<br />" .. _linkcontrol(args['useasstem'], args['γεΑ2'])
end
args['αεΑ'] = _linkcontrol(args['useasstem'], args['αεΑ'])
-- κλητική ενικού αρσενικού ΤΕΣΤ [[όμοροφς]] (κανονικά), [[πόσος]] (χωρίς κεΑ), [[συνεχής]] (με διπλή κλητική)
if (args['κεΑ'] ~= nil and args['κεΑ'] ~= "-") then
if args['κεΑ2'] ~= nil and args['κεΑ2'] ~= '' then
args['κεΑ'] = _linkcontrol(args['useasstem'], args['κεΑ']) .. "(" .. _create_link((args['useasstem'] .. args['κεΑ2']), _xk(args['κεΑ2'])) .. ")" --όπως κλητ. συνεχή(ής) [[Πρότυπο:el-κλίσ-'συνεχής']]
else
args['κεΑ'] = _linkcontrol(args['useasstem'], args['κεΑ'])
end
else
args['κεΑ'] = ""
end
args['οπΑ'] = _linkcontrol(args['useasstem'], args['οπΑ'])
if args['οπΑ2'] ~= nil then
args['οπΑ'] = args['οπΑ'] .. "<br />" .. _linkcontrol(args['useasstem'], args['οπΑ2'])
end
args['γπΑ'] = _linkcontrol(args['useasstem'], args['γπΑ'])
if args['γπΑ2'] ~= nil then
args['γπΑ'] = args['γπΑ'] .. "<br />" .. _linkcontrol(args['useasstem'], args['γπΑ2'])
end
args['απΑ'] = _linkcontrol(args['useasstem'], args['απΑ'])
if args['απΑ2'] ~= nil then
args['απΑ'] = args['απΑ'] .. "<br />" .. _linkcontrol(args['useasstem'], args['απΑ2'])
end
if (args['κπΑ'] ~= nil and args['κπΑ'] ~= "-") then
args['κπΑ'] = _linkcontrol(args['useasstem'], args['κπΑ'])
else
args['κπΑ'] = ""
end
if args['κπΑ2'] ~= nil then
args['κπΑ'] = args['κπΑ'] .. "<br />" .. _linkcontrol(args['useasstem'], args['κπΑ2'])
end
-- θηλυκό -----------------------------
local sec = {}
local use_sec = false
if args['καισεΑ'] then
sec['οεθ'] = 'α'
sec['γεθ'] = 'ας'
sec['αεθ'] = 'α'
sec['κεθ'] = 'α'
use_sec = true
elseif args['καισε-ια'] then --όπως στο [[αλμυρούτσικος]], και τα -ούτσικος
sec['οεθ'] = 'ια'
sec['γεθ'] = 'ιας'
sec['αεθ'] = 'ια'
sec['κεθ'] = 'ια'
use_sec = true
elseif args['καισεΙΑ'] then --όπως στο [[κρητικός]]
sec['οεθ'] = 'ιά'
sec['γεθ'] = 'ιάς'
sec['αεθ'] = 'ιά'
sec['κεθ'] = 'ιά'
use_sec = true
end
args['οεΘ'] = _linkcontrol(args['useasstem'], args['οεΘ'])
args['γεΘ'] = _linkcontrol(args['useasstem'], args['γεΘ'])
if args['γεΘ2'] ~= nil then
args['γεΘ'] = args['γεΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], args['γεΘ2']) -- όπως στο [[απών]]
end
args['αεΘ'] = _linkcontrol(args['useasstem'], args['αεΘ'])
if use_sec then -- Προσθήκη δεύτερων τύπων
args['οεΘ'] = args['οεΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], sec['οεθ'])
args['γεΘ'] = args['γεΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], sec['γεθ'])
args['αεΘ'] = args['αεΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], sec['αεθ'])
end
if (args['κεΘ'] ~= nil and args['κεΘ'] ~= "-") then
args['κεΘ'] = _linkcontrol(args['useasstem'], args['κεΘ'])
else
args['κεΘ'] = ""
end
if use_sec then
if args['κεΘ'] == "" then
args['κεΘ'] = _linkcontrol(args['useasstem'], sec['κεθ'])
else
args['κεΘ'] = args['κεΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], sec['κεθ'])
end
end
args['οπΘ'] = _linkcontrol(args['useasstem'], args['οπΘ'])
if args['καισεΑ'] then
args['οπΘ'] = args['οπΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], 'ες')
end
if args['γπΘ'] ~= nil and args['γπΘ'] ~= "-" then args['γπΘ'] = _linkcontrol(args['useasstem'], args['γπΘ']) else args['γπΘ'] = '' end
if args['γπΘ0'] ~= nil then
args['γπΘ'] = '(' .. _linkcontrol(args['useasstem'], args['γπΘ0']) .. ')'
end
if args['γπΘ2'] ~= nil then
args['γπΘ'] = args['γπΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], args['γπΘ2']) .. ')'
end
--γπΘ ίδια και για το "καισεΑ"
args['απΘ'] = _linkcontrol(args['useasstem'], args['απΘ'])
if args['καισεΑ'] then
args['απΘ'] = args['απΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], 'ες')
end
if (args['κπΘ'] ~= nil and args['κπΘ'] ~= "-") then
args['κπΘ'] = _linkcontrol(args['useasstem'], args['κπΘ'])
else
args['κπΘ'] = ""
end
if args['καισεΑ'] then
if args['κπΘ'] == "" then
args['κπΘ'] = _linkcontrol(args['useasstem'], 'ες')
else
args['κπΘ'] = args['κπΘ'] .. '<br />' .. _linkcontrol(args['useasstem'], 'ες')
end
end
-- ουδέτερο -----------------------------
args['οεΟ'] = _linkcontrol(args['useasstem'], args['οεΟ'])
args['γεΟ'] = _linkcontrol(args['useasstem'], args['γεΟ'])
if (args['γεΟ2'] ~= nil and args['γεΟ2'] ~= "-" ) then
args['γεΟ'] = args['γεΟ'] .. '<br />' .. _linkcontrol(args['useasstem'], args['γεΟ2'])
end
if args['κεΟ'] ~= "-" then
args['κεΟ'] = args['οεΟ']
else
args['κεΟ'] = ""
end
args['οπΟ'] = _linkcontrol(args['useasstem'], args['οπΟ'])
if (args['οπΟ2'] ~= nil and args['οπΟ2'] ~= "-") then
args['οπΟ'] = args['οπΟ'] .. '<br />' .. _linkcontrol(args['useasstem'], args['οπΟ2'])
end
args['γπΟ'] = _linkcontrol(args['useasstem'], args['γπΟ'])
if (args['γπΟ2'] ~= nil and args['γπΟ2'] ~= "-" ) then
args['γπΟ'] = args['γπΟ'] .. '<br />' .. _linkcontrol(args['useasstem'], args['γπΟ2'])
end
if args['κπΟ'] ~= "-" then
args['κπΟ'] = args['οπΟ']
else
args['κπΟ'] = ""
end
end
-- TODO is preprocess necessary?
return frame:preprocess(fulltable2(args))
end
-- ============================ ΚΛΙΣΕΙΣ
_p['ελαστικός'] = function(args) --δοκιμαστικό
args['οεΑ'] = "ός"
args['οεΘ'] = "ή"
args['οεΟ'] = "ό"
args['γεΑ'] = "ού"
args['γεΘ'] = "ής"
args['γεΟ'] = "ού"
args['αεΑ'] = "ό"
args['αεΘ'] = "ή"
args['αεΟ'] = "ό"
args['κεΑ'] = "έ"
args['κεΘ'] = "ή"
args['κεΟ'] = "ό"
args['οπΑ'] = "οί"
args['οπΘ'] = "ές"
args['οπΟ'] = "ά"
args['γπΑ'] = "ών"
args['γπΘ'] = "ών"
args['γπΟ'] = "ών"
args['απΑ'] = "ούς"
args['απΘ'] = "ές"
args['απΟ'] = "ά"
args['κπΑ'] = "οί"
args['κπΘ'] = "ές"
args['κπΟ'] = "ά"
return _p.klisi1(args)
end
return _p