Module:el-nouns-decl

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

Module:el-nouns-decl >> Module:el-nouns-decl/functions     <<   Module:el-nouns-decl/τεκμηρίωση <<
Το Module περιλαμβάνει α) γενικές λειτουργίες (συναρτήσεις) και το Πρότυπο:el-nouns-decl και β) επιμέρους συναρτήσεις, έτοιμους πίνακες κλίσεων που καλούνται από Πρότυπα (βρίσκονται αλφαβητικά στο Module:el-nouns-decl/functions)

Πίνακας Προτύπων, Κατηγοριών και κλίσεων υπάρχει στο Παράρτημα:Ουσιαστικά (νέα ελληνικά) με δυνατότητα πολλαπλών αλφαβητικών κατατάξεων των παραδειγμάτων.
Η διαμόρφωση των θεμάτων γίνεται από το Module:grk-stems

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

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

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

Τα θέματα

  1. το θέμα προκύπτει μετά την αφαίρεση της κατάληξης (ενός ή δύο γραμμάτων) που γίνεται αυτόματα στον Κύριο Ονοματοχώρο (αν θέλουμε, μπορούμε να δηλώσουμε διαφορετικό |λήμμα=xxxx)
    • Μπορούμε να προσδιορίσουμε το θέμα που αντιστοιχεί σε κάποια πτώση, με τις παραμέτρους οεθ, γεθ, και δεύτερους τύπους οε2θ, γε2θ κ.ο.κ. σε περίπτωση που είναι διαφορετικό από το αυτόματο.
  2. Οι παρεμβάσεις στον τονισμό του θέματος για τις παραλλαγές του γίνονται από το Module:grk-stems (άτονο, μετακινήσεις του τόνου) ή/και από το Module:stems (βλ. Πρότυπο:el-nouns-decl)

Βασικές συναρτήσεις

Οι γενικές συναρτήσεις (functions) του Module είναι:

  • klisi1: Συνάρτηση (function) που χρησιμοποιείται για τη μεγάλη πλειοψηφία των ουσιαστικών. Καλείται μόνο από άλλη συνάρτηση του module (από τις Επιμέρους Συναρτήσεις).
  • klisi2: Συνάρτηση (function) που χρησιμοποιείται για ουδέτερα όπως το τσάι, παρόν, μέλλον, ον που εμφανίζουν ένα επιπλέον σύμφωνο (γ ή τ) στο τέλος του θέματος. Καλείται μόνο από Επιμέρους Συνάρτηση του module.
  • fulltable: απ' ευθείας απ' αυτόν τον super-πίνακα δημιουργούνται functions στο Module:el-nouns-decl/functions που έχουν πολλές εξειδικευμένες παρατηρήσεις και υποπεριπτώσεις (όπως η κλίση 'διάμετρος', η κλίση 'όπουλος', κ.ά.)
  • free: καλείται από το Πρότυπο:el-nouns-decl και δημιουργεί πίνακα με δυνατότητα επεξεργασίας όλων των παραμέτρων: ολόκληρης λέξης (οεΛ, γεΛ, αεΛ, ...), θέματος και κατάληξης (οεθ, οε, γεθ, γε, ...)

Επιμέρους συναρτήσεις

Είναι έτοιμες εφαρμογές κλίσεων. Βρίσκονται στο Module:el-nouns-decl/functions, αλφαβητικά.

Τις καλούμε με πρότυπα

Τα Πρότυπα Κλίσων με τη μορφή el-κλίση-'τάδε' καλούν κάποια συνάρτηση
Τρόπος Α:

Τρόπος Β (για ιδιόκλιτα, δύσκολες κλίσεις, ελλειπτικά ή πολυλεκτικούς όρους).

Συντήρηση

Ελέγχουμε συχνά:

Προβλήματα

  • Το module προϋπήρχε, μετά προστέθηκαν λειτουργίες, άρα έχουμε μια ποικιλία, άλλοτε με περιορισμούς, άλλοτε όχι. Θα προτιμούσαμε να προκύπτουν τα πάντα με ενιαίο τρόπο από την function free, με όλες τις δυνατότητες διαθέσιμες ανά πάσα στιγμή στον συγγραφέα προτύπων.
  • Η παρουσία του άρθρου, δημιουργεί πολλές κατηγορίες. Η θέση του τόνου (παροξύτονα ή προπαροξύτονα) είναι ανοιχτή: θα έπρεπε ίσως να είναι αυστηρή: κάθε function να δέχεται λέξεις μόνον παροξύτονες ή μόνον προπαροξύτονες.

--[=[
-- 2020.03.21.
Ενοποίηση των / A transfer from 
* [[Module:κλίση/el/ουσιαστικό]] με μεταφρασμένες τις ονομασίες εντολών 
* και στοιχεία από /plus elements from [[Module:Table-el-1]] 
ΣΥΓΓΡΑΦΕΙΣ / AUTHORS
	Flyax and Xoristzatziki (2015-2018)
	edits by Sarri.greek (2020)

ΔΟΜΗ / STRUCTURE
	1) παραγωγή θεμάτων / stem-production, required modules
	2) χρώματα, σύνδεσμοι, στυλ, γλώσσα / colours, links, styles, languages
	3) fulltable: άρθρα, πτώσεις / article, cases. 
	4) Κατηγορίες / Categories
	5) klisi1 (generates most templates)
	6) klisi2 (plus an interfix)
	7) free table
	8) [[Module:el-nouns-decl/functions]] Οι επιμέρους λειτουργίες για τα Πρότυπα / functions for specific Templates α...ω

ΟΡΟΛΟΓΙΑ / GREEK TERMS
	ονομασίες θεμάτων - stem names
		"θ" = το θέμα όπως το βρίσκουμε από το λήμμα / the stem as taken from the lemma
		"θ0" = άτονο / unaccented
		"θ1" = τονισμένο στην τελευταία του συλλαβή / accented on its last syllable
		"θ2" = τονισμένο στην προτελευταία του συλλαβή / accented on the syllable before the last
	1st character: ο = nom. γ = gen. α = acc. κ = voc.
	2nd character: ε = singular,  π = plural.   Parameter α= (number=) εν (singular) πλ (plural)
	3rd character: Λ = λέξη/word (=θέμα+κατάληξη =stem+ending)
	3rd character: 
		0 (zero: place the word in parenthesis)
		2 (add an extra form in the cell)
		θ (greek letter theta for θέμα (thema) = stem)
	λήμμα = lemma
	κατ = cat (category)
	
LOG
* 2021.04.26. move Articles section to [[Module:el-articles]]
* 2020.09.13. Δημιουργήθηκαν Κατηγορίες ελέγχου για κλίσεις που χωρίστηκαν (παροξύτονα προπαρογύτοναι)
	Συζήτηση [[Module talk:el-nouns-decl/functions]] - [[:Κατηγορία:Έλεγχος κλίσης - Ουσιαστικά (νέα ελληνικά)]]
* 2020.09.01. α2γε α2απ γενική ενικού / αιτιατική πληθυντικού δύο γραμμών
	για τα κοινού γένους που έχουν 2 άρθρα, 2 γραμμές όπως [[συγγραφέας]], [[βιομήχανος]]

ΠΡΟΒΛΗΜΑΤΑ - PROBLEMS marked with ??
* Why do I have to repeat the section about the lemma and stems in EVERY function at [[Module:el-nouns-decl/functions]]? (like 'αγώνας')
]=]--


export = {}


local m_functions = require("Module:el-nouns-decl/functions")

--------------------------------------------------------------------------
-- 1. STEM PRODUCTION, REQUIRED MODULES / ΔΗΜΙΟΥΡΓΙΑ ΘΕΜΑΤΩΝ, MODULES   --
--------------------------------------------------------------------------
local languages = mw.loadData("Module:Languages") -- see LANGUAGES / only el used for lang_name = languages[lang_iso]['name']

-- do not name 'local': it does not work for Module:el-nouns-decl/functions
m_stems = require("Module:grk-stems") -- stem production: 
	--functions:
		--word0 =  no accent, word1 = accent on ultima,  word2 = accent on penultima
		--hasaccent = tells us if it has an accent
-- how to use [[Module:el-articles]]		
	-- DO NOT use m_art = require.... 
	-- USE DIRECTLY as [[User:Trappist the monk]] did,  require ('Module:el-articles').articles (args)  instead of ARTICLES section.		
	--DO NOT USE: m_art = require("Module:el-articles") -- all args for articles
	--DO NOT USE: m_art = require ('Module:el-articles').articles (args)

tinti = require("Module:tin") --tinti function:tin
	-- chooses the correct acc.singular feminine article την (tin) or τη (ti)



--------------------------------------------------------------------------
--             2. links & styles / σύνδεσμοι & στυλ                     --
--------------------------------------------------------------------------

-- =========== standard colours (BLUE) and styles
-- borders
c_border = '#a1bdea' -- same as c_1 previously #AAAACC
c_bord = '#eaf0fa' -- or '#eeeeee' -- inner lighter borders
-- background colours
c_1 = '#a1bdea' -- ROW title1 MAIN, and border for title2 if it exists
c_2 = '#c1d3f1' -- title2 (e.g. genders of adjectives) and border for title1
c_3 = '#d5e2f6' -- title3, all the subtitles --previously  #BED9ED
c_4 = '#eaf0fa' -- background for notes - also test: #f8f8ff - previously #d9ebff
-- font colours
c_ending = '#EB0000'  -- former DeepPink
c_stem = '#002000'
c_black = '#000000'
c_cccccc = '#cccccc'
c_green = '#008000'

-- styles
font_cell = "" -- ?? find out what the default family is
fontsize_cell = "" -- the default is ??

--  apply colours - εφαρμογή χρωμάτων
ending_color = function(kataliksi)
    return '<span style="color:' .. c_ending ..'; font-weight:normal;">' .. kataliksi .. '</span>'
end

stem_color = function(thema)
    return '<span style="color:' .. c_stem ..'; font-weight:normal;">' .. thema .. '</span>'
end

infix_color = function(infix) -- this is not an inifix. It is part of 2nd stem.
    return '<span style="color:' .. c_stem ..'; font-weight:normal;">' .. infix .. '</span>'
end

black_color = function(black_thing)
    return '<span style="color:' .. c_black ..'; font-weight:normal;">' .. black_thing .. '</span>'
end
cccccc_color = function(cccccc_thing)
    return '<span style="color:' .. c_cccccc ..'; font-weight:normal;">' .. cccccc_thing .. '</span>'
end
green_color = function(green_thing)
    return '<span style="color:' .. c_green ..'; font-weight:normal;">' .. green_thing .. '</span>'
end


-- no need for lang_link. Go to top of page
-- ====================== Links
create_link = function(page, text)
	if text then
		return '[[' .. page .. '|' .. text .. ']]'
	else
		return '[[' .. page .. ']]'
	end
end

-- for klisi1 it controls stem and ending
linkcontrol2 = function(thema, kataliksi)
	thema = thema or '' -- needed when calling χχθ in functions like 'θάλασσα'
	kataliksi = kataliksi or ''	-- this was needed after introducing params for WORDS like οεΛ, γεΛ, etc.
	return create_link(thema .. kataliksi, stem_color(thema) ..  ending_color(kataliksi))
end

---for klisi2 + infix πρόσφυμα it controls stem, infix and ending
linkcontrol3 = function(thema, infix, kataliksi)
	thema = thema or '' -- PROBLEM at klisi2 for [[γυναικολόι]] with α=εν (sg only) AND γε=- (no gen.sg)
	return create_link(thema .. infix .. kataliksi, stem_color(thema) ..  infix_color(infix) .. ending_color(kataliksi))
end

-- Errors -- use it with writing: if blahblah then return errorhere('xxxxxx') end
errorhere = function(errstring)
    return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα στο πρότυπο κλίσης ουσιαστικών (νέα ελληνικά)]]'
end


--------------------------------------------------------------------------
--                        3. TABLE / ΠΙΝΙΚΑΣ                            --
--------------------------------------------------------------------------
-- by Flyax and Xoristzatziki (2015-2018)
-- additions: 2020

fulltable = function(args)
	
-- table: -- note: in some browsers, border is not visible. Need border="1"
float = args['float'] or ''
	if args['float'] == 'left' then
table_style1 = 'style="clear:left; float:left; position:relative; margin: 0px 1.5em 0.5em 0px; background:#ffffff; border:1px solid' .. c_border ..'; text-align:left;" rules="none" cellpadding="3" cellspacing="0"'
	elseif args['float'] == 'center' then
table_style1 = 'style="margin-left:auto; margin-right:auto; margin-bottom:0.5em; background:#ffffff; border:1px solid' .. c_border ..'; text-align:center;" rules="none" cellpadding="3" cellspacing="0"'	
	else
table_style1 = 'style="clear:right; float:right; margin-left:0.5em; margin-bottom:0.5em;background:#ffffff; border:1px solid' .. c_border ..'; text-align:right;" rules="none" cellpadding="3" cellspacing="0"'
	end

-- DO NOT use cat-extra in pages (needs lang_name). Use κατηγ or υποκατ
-- =============== LANGUAGES for categories and notes in appendix
-- only el (νέα ελληνικά) -- πιθανόν να προστεθούν διαλεκτικές κλίσεις
	lang_iso = lang_iso or 'el'
--	lang_link = languages[lang_iso]['link'] or ''
	lang_name = languages[lang_iso]['name'] or ''
	lang_name = 'νέα ελληνικά'
	
-- ===============  gender of numbers if different ([[πλούτος]])
	local gender = ''
	local gender_en = ''
	if args['γένος_εν'] ~= 'αρσενικό' and args['γένος_εν'] ~= 'θηλυκό' and args['γένος_εν'] ~= 'ουδέτερο' and args['γένος_εν'] ~= 'κοινό' then args['γένος_εν'] = '' end
	if args['γένος_εν'] == 'κοινό' then args['γένος_εν'] = 'κοινού γένους' end	-- όπως στο [[βουλευτής]]
	if args['γένος_εν'] == 'αρσενικό' then args['γένος_εν'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['γένος_εν'] == 'θηλυκό' then args['γένος_εν'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['γένος_εν'] == 'ουδέτερο' then args['γένος_εν'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
	local gender_pl = ''
	if args['γένος_πλ'] ~= 'αρσενικό' and args['γένος_πλ'] ~= 'θηλυκό' and args['γένος_πλ'] ~= 'ουδέτερο' and args['γένος_πλ'] ~= 'κοινό' then args['γένος_πλ'] = '' end
	if args['γένος_πλ'] == 'κοινό' then args['γένος_πλ'] = 'κοινού γένους' end -- όπως [[Πρότυπο:el-κλίση-'γλου']]
	if args['γένος_πλ'] == 'αρσενικό' then args['γένος_πλ'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['γένος_πλ'] == 'θηλυκό' then args['γένος_πλ'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['γένος_πλ'] == 'ουδέτερο' then args['γένος_πλ'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
	local gender_pl2 = ''	-- 2ος πληθυντικός όπως [[Πρότυπο:el-κλίση-'βράχος']]
	if args['γένος_πλ2'] ~= 'αρσενικό' and args['γένος_πλ2'] ~= 'θηλυκό' and args['γένος_πλ2'] ~= 'ουδέτερο' and args['γένος_πλ2'] ~= 'κοινό' then args['γένος_πλ2'] = args['γένος_πλ2'] or '' end
	if args['γένος_πλ2'] == 'κοινό' then args['γένος_πλ2'] = 'κοινού γένους' end -- όπως [[Πρότυπο:el-κλίση-'Οικονόμου']]
	if args['γένος_πλ2'] == 'αρσενικό' then args['γένος_πλ2'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['γένος_πλ2'] == 'θηλυκό' then args['γένος_πλ2'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['γένος_πλ2'] == 'ουδέτερο' then args['γένος_πλ2'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
-- =============== strin parameters
	-- numbers
	local sg_title_str = '' -- singularis title string / ἑνικός
	-- local sg2_title_str = '' -- 2nd singular column NOT USED in this module
    local pl_title_str = '' -- pluralis  title / πληθυντικός
    local pl2_title_str = '' -- 2nd plural title / 2ος πληθυντικός αν υπάρχει  like [[βράχος]]
    -- cases
    local nom_sg_str = '' -- nominativus singularis / ονομαστική ενικός
    local nom_pl_str = ''
    local nom_pl2_str = ''
    local gen_sg_str = '' -- genitivus / γενική
    local gen_pl_str = ''
    local gen_pl2_str = ''
    local acc_sg_str = '' -- accusativus / αιτιατική
    local acc_pl_str = ''
    local acc_pl2_str = ''
    local voc_sg_str = '' -- vocativus / κλητική
    local voc_pl_str = ''
    local voc_pl2_str = ''
	-- articles
    local a_nom_sg_str = ''
    local a_nom_pl_str = ''
    local a_nom_pl2_str = ''
    local a_gen_sg_str = ''
    local a_gen_pl_str = ''
    local a_gen_pl2_str = ''
    local a_acc_sg_str = ''
    local a_acc_pl_str = ''
    local a_acc_pl2_str = ''
    local a_voc_sg_str = ''
    local a_voc_pl_str = ''
    local a_voc_pl2_str = ''

   
-- άρθρα - ARTICLES ===========================================================
require ('Module:el-articles').articles (args)

-- σημειώσεις - NOTES  ========================================================
    local paratirisi = ''			-- notes by editor
    local note = args['σημ'] or  ''	-- standard notes by Template
    local appendix = ''				-- standard link to the Appendix [[Παράρτημα:Ουσιαστικά (νέα ελληνικά)]]
    local append = ''			-- link to Appendix at specific paradigm
    local as_in = args['όπως']	or ''    	-- editor must add: e.g. θηλυκά#ασημόσκονη|ασημόσκονη
    			cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
    			typos = args['τύπος'] or args['κατ'] or ''
    	if as_in == '' or as_in == nil then append = '' else
    		if typos == '-' or typos == '' or typos == nil then
    		append = "όπως «[[Παράρτημα:Ουσιαστικά (νέα ελληνικά)/" .. as_in .. ']]» - '
    		else
    		append = '[[:Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ")|Κατηγορία]]  όπως «[[Παράρτημα:Ουσιαστικά (νέα ελληνικά)/" .. as_in .. ']]» - '
    		end
    	end
-- Αριθμοί - NUMBERS ===========================================================
    local hassingular = true		--(args['εν'] ~= nil)
    if args['α'] == "πλ" or args['α2'] == "πλ" then hassingular = false end		
    	-- α= Ουσιαστικά ΧΩΡΙΣ ενικό / singular does not exist
    	-- α2 = Ουσιαστικά στον πληθυντικό (υπάρχει και ενικός) / but singular exists elsewhere
    local hasplural = true -- (args['πλ'] ~= nil)
    if args['α'] == "εν" or args['α2'] == "εν" then hasplural = false end

-- note lines / παρατήρηση π.χ. στο [[χάλυβας]]

-- get 7 columns if plural2 exists
if args['γένος_πλ2'] ~= '' and args['γένος_πλ2'] ~= nil then
	if args['σημ'] ~= '' or args['σημ'] ~= nil then					-- pre-edited notes όπως στο ίδης: [[Πρότυπο:el-κλίση-'ίδης']]
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="7" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. '<br>' .. args['παρατήρηση'] .. "\n"
    	else
        paratirisi = '|-' .. "\n" .. [=[| colspan="7" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. "\n"
    	end
    end
	if args['σημ'] == '' or args['σημ'] == nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="7" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. args['παρατήρηση'] .. "\n"
    	else
    	paratirisi = ''
    	end
    end
	-- appendix
	if args['παράρτημα'] == '-' then appendix = ''
		cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
	elseif args['κατηγορία κλίσης'] == 'Επώνυμα' or args[1] == "επ+" or args[1] == "επ-ον" then	-- check [[Οικονόμου]] (επ-ον check --- )
        appendix = '|-' .. "\n" .. [=[| colspan="7" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. '[[Παράρτημα:Ονόματα και επώνυμα στα ελληνικά|Ονοματεπώνυμα]] -'
        .. append ..  '[[Παράρτημα:Ουσιαστικά (νέα ελληνικά)|<span title="Παράρτημα:Ουσιαστικά">Παράρτημα:Ουσιαστικά</span>]]' .. "\n"
	elseif args['παράρτημα'] ~= '-'  and args['παράρτημα'] ~= '' and args['παράρτημα'] ~= nil  then
        appendix = '|-' .. "\n" .. [=[| colspan="7" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. args['παράρτημα'] .. "\n"
	else
        appendix = '|-' .. "\n" .. [=[| colspan="7" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. '[[Παράρτημα:Ουσιαστικά (νέα ελληνικά)|<span title="Παράρτημα:Ουσιαστικά">Παράρτημα:Ουσιαστικά</span>]]' .. "\n"
    end
else --if there is NO 2nd plural get 5 columns (which seems to be working for only one number too!)   
	if args['σημ'] ~= '' or args['σημ'] ~= nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="5" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. '<br>' .. args['παρατήρηση'] .. "\n"
    	else
        paratirisi = '|-' .. "\n" .. [=[| colspan="5" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. "\n"
    	end
    end
	if args['σημ'] == '' or args['σημ'] == nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="5" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. args['παρατήρηση'] .. "\n"
    	else
    	paratirisi = ''
    	end
    end
	-- appendix
	if args['παράρτημα'] == '-' then appendix = ''
	elseif args['κατηγορία κλίσης'] == 'Επώνυμα' or args[1] == "επ+" or args[1] == "επ-ον"  then	-- check [[Αγγελίδης]]  (επ-ον check [[Πολυχρόνης]])
        appendix = '|-' .. "\n" .. [=[| colspan="5" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. '[[Παράρτημα:Ονόματα και επώνυμα στα ελληνικά|Ονοματεπώνυμα]] - ' .. append .. '[[Παράρτημα:Ουσιαστικά (νέα ελληνικά)|<span title="Παράρτημα:Ουσιαστικά">Παράρτημα:Ουσιαστικά</span>]]' .. "\n"
	elseif args['παράρτημα'] ~= '-'  and args['παράρτημα'] ~= '' and args['παράρτημα'] ~= nil  then
        appendix = '|-' .. "\n" .. [=[| colspan="5" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. args['παράρτημα'] .. "\n"
	else
        appendix = '|-' .. "\n" .. [=[| colspan="5" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. '[[Παράρτημα:Ουσιαστικά (νέα ελληνικά)|<span title="Παράρτημα:Ουσιαστικά">Παράρτημα:Ουσιαστικά</span>]]' .. "\n"
    end
end -- close 2nd plural

    
-- columns (spaces added for good copy-paste result)
    if hassingular then
    	-- make c_border, if not 5 columns (table_style1's border does not apply) check [[γιόκας]]
    	if args['α'] == 'εν' or args['α2'] == 'εν' then
        sg_title_str =  [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ενικός|<span title="ενικός αριθμός" style="color:black;">'''''ενικός'''''</span>]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]=] .. "\n"
        gender_en = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['γένος_εν'] .. "\n"
        a_nom_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αοε'] ..  "\n" -- test m_art(args['αοε'])
        nom_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['οεΛ'] ..  "\n"
        a_gen_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αγε'] ..  "\n"
        gen_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['γεΛ'] ..  "\n"
        a_acc_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['ααε'] ..  "\n"
        acc_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['αεΛ'] ..  "\n"
        a_voc_sg_str =  [=[| align="center" | ]=] .. args['ακε'] ..  "\n"
        voc_sg_str =  [=[| style="border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['κεΛ'] ..  "\n"
        else
        sg_title_str =  [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ενικός|<span title="ενικός αριθμός" style="color:black;">'''''ενικός'''''</span>]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]=] .. "\n"
        gender_en = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['γένος_εν'] .. "\n"
        a_nom_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αοε'] ..  "\n" -- test m_art(args['αοε']) -- test m_art.articles(args['αοε']) 
        nom_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['οεΛ'] ..  "\n"
        a_gen_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αγε'] ..  "\n"
        gen_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['γεΛ'] ..  "\n"
        a_acc_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['ααε'] ..  "\n"
        acc_sg_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['αεΛ'] ..  "\n"
        a_voc_sg_str =  [=[| align="center" | ]=] .. args['ακε'] ..  "\n"
        voc_sg_str =  [=[| style="border-right:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['κεΛ'] ..  "\n"
        end
    end
    if hasplural then
    	-- make c_border, if not 5 columns (table_style1's border does not apply) check [[Γάλλοι]]
    	if args['α'] == 'πλ' or args['α2'] == 'πλ' then
        pl_title_str = [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[πληθυντικός|<span title="πληθυντικός αριθμός" style="color:black;">'''''πληθυντικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"
        gender_pl = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['γένος_πλ'] .. "\n"
        a_nom_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αοπ'] ..  "\n"
        nom_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['οπΛ'] ..  "\n"
        a_gen_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αγπ'] ..  "\n"
        gen_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['γπΛ'] ..  "\n"
        a_acc_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['ααπ'] ..  "\n"
        acc_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['απΛ'] ..  "\n"
        a_voc_pl_str =  [=[| align="center" | ]=] .. args['ακπ'] ..  "\n"
        voc_pl_str =  [=[| style="border-right:1px solid ]=] .. c_border .. [=[;" align="left" | ]=] .. args['κπΛ'] ..  "\n"
        else
        pl_title_str = [=[! style="background:]=] .. c_1 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[πληθυντικός|<span title="πληθυντικός αριθμός" style="color:black;">'''''πληθυντικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"
        gender_pl = [=[| style="background:]=] .. c_2 ..
        [=[; border-right:1px solid ]=] .. c_1 .. [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['γένος_πλ'] .. "\n"
        a_nom_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αοπ'] ..  "\n"
        nom_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['οπΛ'] ..  "\n"
        a_gen_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αγπ'] ..  "\n"
        gen_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['γπΛ'] ..  "\n"
        a_acc_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['ααπ'] ..  "\n"
        acc_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['απΛ'] ..  "\n"
        a_voc_pl_str =  [=[| align="center" | ]=] .. args['ακπ'] ..  "\n"
        voc_pl_str =  [=[| align="left" | ]=] .. args['κπΛ'] ..  "\n"
        end
    end
-- 2nd plural - 2ος πληθυντικός όπως [[Πρότυπο:el-κλίση'βράχος']]
    if args['γένος_πλ2'] ~= '' and args['γένος_πλ2'] ~= nil then
		args['αοπ2'] = args['αοπ2'] or ''
		args['αγπ2'] = args['αγπ2'] or ''
		args['ααπ2'] = args['ααπ2'] or ''
		args['οπΛ2'] = args['οπΛ2'] or ''
		args['γπΛ2'] = args['γπΛ2'] or ''
		args['απΛ2'] = args['απΛ2'] or ''
		args['κπΛ2'] = args['κπΛ2'] or ''
	end
    if args['γένος_πλ2'] ~= '' and args['γένος_πλ2'] ~= nil then
        pl2_title_str = [=[! style="background:]=] .. c_1 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[πληθυντικός|<span title="πληθυντικός αριθμός" style="color:black;">'''''2ος&nbsp;πληθυντικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"
        gender_pl2 = [=[| style="background:]=] .. c_2 ..
        [=[; border-right:1px solid ]=] .. c_1 .. [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['γένος_πλ2'] .. "\n"
        a_nom_pl2_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αοπ2'] ..  "\n"
        nom_pl2_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['οπΛ2'] ..  "\n"
        a_gen_pl2_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['αγπ2'] ..  "\n"
        gen_pl2_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['γπΛ2'] ..  "\n"
        a_acc_pl2_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="center" | ]=] .. args['ααπ2'] ..  "\n"
        acc_pl2_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[;" align="left" | ]=] .. args['απΛ2'] ..  "\n"
        a_voc_pl2_str =  [=[| align="center" | ]=] .. args['ακπ2'] ..  "\n"
        voc_pl2_str =  [=[| align="left" | ]=] .. args['κπΛ2'] ..  "\n"
    end	

-- and rows

-- row for genders if different in number ([[πλούτος]])
	if (args['γένος_εν'] ~= '' or args['γένος_πλ'] ~= '') and args['γένος_πλ2'] == '' or args['γένος_πλ2'] == nil then gender =
'|-' .. "\n" .. [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
[=[; text-align:center; font-size:70%; line-height:100%;" align="center"|  ]=] .. "\n" .. gender_en .. gender_pl .. [=[|-]=]
end
	-- 2 plurals [[Πρότυπο:el-κλίση'βράχος']]
	if (args['γένος_εν'] ~= '' or args['γένος_πλ'] ~= '') and args['γένος_πλ2'] ~= '' then gender =
'|-' .. "\n" .. [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
[=[; text-align:center; font-size:70%; line-height:100%;" align="center"|  ]=] .. "\n" .. gender_en .. gender_pl .. gender_pl2 .. [=[|-]=]
	end

    output = [=[{| ]=] .. table_style1 .. [=[
|-
! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
	[=[; text-align:center; font-size:90%;" align="center"| &darr;&nbsp;''πτώσεις'' ]=] ..
	"\n" .. sg_title_str .. pl_title_str .. pl2_title_str .. gender .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| [[ονομαστική|<span title="ονομαστική πτώση" style="color:black;">'''''ονομαστική'''''</span>]]]=] ..
	"\n" .. a_nom_sg_str .. nom_sg_str .. a_nom_pl_str .. nom_pl_str .. a_nom_pl2_str .. nom_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[γενική|<span title="γενική πτώση" style="color:black;">'''''γενική'''''</span>]]]=] ..
	"\n" .. a_gen_sg_str .. gen_sg_str .. a_gen_pl_str .. gen_pl_str .. a_gen_pl2_str .. gen_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;[[αιτιατική|<span title="αιτιατική πτώση" style="color:black;">'''''αιτιατική'''''</span>]]]=] ..
	"\n" .. a_acc_sg_str .. acc_sg_str .. a_acc_pl_str .. acc_pl_str .. a_acc_pl2_str .. acc_pl2_str .. [=[|-
| style="background:]=] .. c_3 ..
	[=[; text-align:right;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[κλητική|<span title="κλητική πτώση" style="color:black; font-size:90%;">'''''κλητική'''''</span>]]]=] ..
	"\n" .. a_voc_sg_str .. voc_sg_str .. a_voc_pl_str .. voc_pl_str .. a_voc_pl2_str .. voc_pl2_str .. paratirisi .. appendix .. [=[|}]=]
	--αφαιρείται, δίπλα από τη λέξη κλητική το: ([[ε|<span title="κλητικό επιφώνημα">ε</span>]]!)


--------------------------------------------------------------------------
--                   4. Categories / Κατηγορίες                         --
--------------------------------------------------------------------------

-- κατηγορία κλίσης = the PartOfSpeech (plus as ProperNouns, Surnames etc)
-- τύπος = the catchword of the category in quotation marks
-- κατ = overrides τύπος
-- and FREE categories
	local page = mw.title.getCurrentTitle()
    page.name = page.text:match( "^%s*(.-)%s*$" )
    if page.namespace == 0 then
-- nocat e.g.  [[-ανός]]
if (args['nocat'] ~= '' and args['nocat'] ~= nil) or (args['00'] ~= '' and args['00'] ~= nil) then
	output = output
else
    	if args['κατηγορία'] ~= '' and args['κατηγορία'] ~= nil then -- free text for Category
    		output = output .. '[[Κατηγορία:' .. args['κατηγορία'] .. ' (' .. lang_name .. ')]]'
    	else

    			-- param κατ= για δημιουργία κατηγοριών που συμπληρώνει ο συντάκτης - editor creates Categories ad libitum
    			-- Υπερισχύει του 'τύπος' - It overrides 'τύπος'
    			cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
    			typos = args['τύπος'] or args['κατ'] or ''
    			if args['τύπος'] == '-' then output = output -- check [[πλους]] & control category:  Κατηγορία:Ουσιαστικά που κλίνονται όπως το ''
    			else
    				
    			if args['κατ'] ~= '' and args ['κατ'] ~= nil then
    				typos = args['κατ']		-- check ?
					output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ")]]"
   				-- αν χρειαστούν ΔΥΟ παρόμοια, όπως στο [[σπετζοφάι]], μπορούμε να χρησιμοποιήσουμε free categories
   					else
   					typos = args['τύπος']
-- Υπο-Κατηγορίες για α, α2 / make subcategories for numbers
cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
-- SUPPRESS declensins in one number BY DEFAULT (from the functions) e.g. [[αιδώς]]
	if args['α'] == 'εν' and (args['κατ'] == '' or args['κατ'] == nil) then
		if args['sg-default'] == '1' then	-- default at function for all the declension
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')]]'
		else
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' χωρίς πληθυντικό (" .. lang_name .. ')]]'
		end
	elseif args['α'] == 'πλ' and (args['κατ'] == '' or args['κατ'] == nil)  then
		if args['pl-default'] == '1' then	-- default at function for all the declension
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')]]'
		else
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' χωρίς ενικό (" .. lang_name .. ')]]'
		end
	elseif args['α2'] == 'εν' and (args['κατ'] == '' or args['κατ'] == nil)  then
		if args['sg-default'] == '1' then	-- default at function for all the declension
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')]]'
		else
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' στον ενικό (" .. lang_name .. ')]]'
		end
	elseif args['α2'] == 'πλ' and (args['κατ'] == '' or args['κατ'] == nil)  then
		if args['pl-default'] == '1' then	-- default at function for all the declension
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')]]'
		else	
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' στον πληθυντικό (" .. lang_name .. ')]]'
		end
--
	elseif (args['γε0'] ~= '' and  args['γε0'] ~= nil) then output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' με δύσχρηστη γενική ενικού (" .. lang_name .. ')]]'
	elseif (args['γπ0'] ~= '' and  args['γπ0'] ~= nil) then output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' με δύσχρηστη γενική πληθυντικού (" .. lang_name .. ')]]'
	elseif args['γε'] == '-' then output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' χωρίς γενική ενικού (" .. lang_name .. ')]]'
	elseif args['γπ'] == '-' then output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' χωρίς γενική πληθυντικού (" .. lang_name .. ')]]'

	else
        		--η γλώσσα στην κατηγορία θα είναι απαραίτητη αν υπάρχουν ίδιοι "τύποι" σε διαφορετικές γλώσσες.
            		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')]]'
            		
        end -- close if typos=-
end -- close subcategories

            	end -- close 'κατ'
    		
    	end -- close free text κατηγορία
    	

-- genders / Κατηγορίες για γένη
	if args['αρσ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' αρσενικά (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' κοινού γένους (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' ουδέτερα (' .. lang_name .. ')]]' end
-- έξτρα: υποθετικό 
	-- + and args['υποκατ'] == '' βλ. [[τάρταρος]] 
	-- + when subgenders  γένος_εν, βλ [[Οικονόμου]]
	if args['αρσ'] ~= '1' and args['θηλ'] ~= '1' and args['αθ'] ~= '1' and args['ουδ'] ~= '1' and args['υποκατ'] == '' and (args['γένος_εν']  == '' or args['γένος_πλ']  == '' or args['γένος_εν']  == '')  then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς γένος (' .. lang_name .. ')]]'
	end

-- numbers / Κατηγορίες για τον αριθμό
	if args['α'] == 'εν' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς πληθυντικό (' .. lang_name .. ')]]' end		-- singularia tanutm
	if args['α'] == 'πλ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς ενικό (' .. lang_name .. ')]]' end			-- pluralia tantum
	if args['α2'] == 'εν' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' στον ενικό (' .. lang_name .. ')]]' end			-- mostly in the singular
	if args['α2'] == 'πλ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' στον πληθυντικό (' .. lang_name .. ')]]' end		-- mostly in the plural

-- κοινό
	args['κοινό'] = args['κοινό'] or ''
	if args['κοινό'] ~= '' and args['κοινό'] ~= nil then 
		args['κοινό'] = ' ' .. args['κοινό']
		output = output .. '[[Κατηγορία:Πολυλεκτικοί όροι με ένα κλιτό (' .. lang_name .. ')]]' end
	if args['κοινό'] ~= '' and args['κοινό'] ~= nil and args['αρσ'] == '1' then
		output = output .. '[[Κατηγορία:Κλίση αρσενικών πολυλεκτικών όρων με ένα κλιτό (' .. lang_name .. ')]]' end
	if args['κοινό'] ~= '' and args['κοινό'] ~= nil and args['θηλ'] == '1' then
		output = output .. '[[Κατηγορία:Κλίση θηλυκών πολυλεκτικών όρων με ένα κλιτό (' .. lang_name .. ')]]' end
	if args['κοινό'] ~= '' and args['κοινό'] ~= nil and args['ουδ'] == '1' then
		output = output .. '[[Κατηγορία:Κλίση ουδέτερων πολυλεκτικών όρων με ένα κλιτό (' .. lang_name .. ')]]' end


-- γενικές: αν εμφανίζεται ΜΟΝΟ στον αντίθετο αριθμό, να μην εισάγεται στην Κατηγορία
-- βλ. και επιμέρους functions όπου υπάρχει αυτή η σύμβαση (π.χ. όνομα, παιδάκι)
-- όπως (...)
	if args['γε'] == '-' then
		if args['α'] ~= 'πλ' and args['α2'] ~= 'πλ' then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς γενική ενικού (' .. lang_name .. ')]]'
		end
	end
-- όπως [[χειροπέδη]] μόνο στον ενικό. Αν όμως εξακολουθεί να υπάρχει γπ2, να μην μπαίνει στην κατηγορία (όπως [[μπαγάσας]])
	if args['γπ'] == '-' and args['γπ2'] == nil then 
		if args['α'] ~= 'εν' and args['α2'] ~= 'εν' then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς γενική πληθυντικού (' .. lang_name .. ')]]'
		end
	end
-- δύσχρηστη γενική ενικού όπως [[λιοστάσι]]
	if args['γε0'] ~= '' and args['γε0'] ~= nil then
		if args['α'] ~= 'πλ' and args['α2'] ~= 'πλ' then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' με δύσχρηστη γενική ενικού (' .. lang_name .. ')]]'
		end
	end
-- δύχρηστη γενική πληθυντικού όπως [[σκόνη]], [[νότα]]
	if args['γπ0'] ~= '' and args['γπ0'] ~= nil then
		if args['α'] ~= 'εν' and args['α2'] ~= 'εν' then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' με δύσχρηστη γενική πληθυντικού (' .. lang_name .. ')]]'
		end
	end
-- ΑΛΛΕΣ ΚΑΤΗΓΟΡΙΕΣ
	-- ανώμαλα (irregulars) --perhaps no needed
	if args['ανώμ'] == '1' then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ανώμαλα (' .. lang_name .. ')]]'
	end
	-- plus exceptions  -- check [[μουσταλευριά]]
	if args['εξ'] == '1' or args['εξαίρεση'] == '1' then
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' εξαιρέσεις (" .. lang_name .. ")]]"
	end
-- check [[πλούτος]], (για πολυλεκτικούς όρους [[Πρότυπο:el-κλίση-όροι]])
	
-- ======= EXTRA CATEGORIES: zero is reserved for the module ONLY, not for editor
-- free category, ελεύθερη κατηγορία +part of speech + language
	if args['υποκατ'] ~= '' and args ['υποκατ'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ1'] ~= '' and args ['υποκατ1'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ1'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ2'] ~= '' and args ['υποκατ2'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ2'] .. ' (' .. lang_name .. ')]]'
	end
	-- for Module use ONLY 
	if args['υποκατ0'] ~= '' and args ['υποκατ0'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ0'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ01'] ~= '' and args ['υποκατ01'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ01'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ02'] ~= '' and args ['υποκατ02'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ02'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ03'] ~= '' and args ['υποκατ03'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ03'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ04'] ~= '' and args ['υποκατ04'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ01'] .. ' (' .. lang_name .. ')]]'
	end
-- free category, ελεύθερη κατηγορία + language
	if args['κατηγ0'] ~= '' and args['κατηγ0'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ0'] .. ' (' .. lang_name .. ')]]'
	end

	if args['κατηγ'] ~= '' and args['κατηγ'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ1'] ~= '' and args['κατηγ1'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ1'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ2'] ~= '' and args['κατηγ2'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ2'] .. ' (' .. lang_name .. ')]]'
	end

-- free category, ελεύθερη κατηγορία NO LANGUAGE no restrictions, write free text -- -- test Template [[λύσας]]
	if args['cat-extra0'] ~= '' and args['cat-extra0'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra0'] .. ']]'
	end
	if args['cat-extra'] ~= '' and args['cat-extra'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra'] .. ']]'
	end
	if args['cat-extra1'] ~= '' and args['cat-extra1'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra1'] .. ']]'
	end
	if args['cat-extra2'] ~= '' and args['cat-extra2'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra2'] .. ']]'
	end

end -- close nocat
end -- close 'if namespace'


return output -- close fulltable

end


--------------------------------------------------------------------------
--           GENERAL DECLENSIONS  / ΓΕΝΙΚΕΣ ΚΛΙΣΕΙΣ                     --
--------------------------------------------------------------------------


--------------------------------------------------------------------------
--               5.   klisi1 - the basic function                       --
--------------------------------------------------------------------------
-- by Flyax and Xoristzatziki (2015-2018)
-- alterations of command names: 2020

klisi1 = function(args)
-- lemma
	local lemma = args['λήμμα'] or ''
	PAGENAME = mw.title.getCurrentTitle().text
	if lemma  == '' then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" ) 
		else lemma = args['λήμμα']
	end 	
-- stems if lemma is in plural number (οπ = nom.pl)
    local stemnumber = 0
    if args['α'] ~= "πλ" or args['α2'] ~= "πλ" then
        stemnumber = tonumber(mw.ustring.len(args['οε']))
    end
    if args['α'] == "πλ" or args['α2'] == "πλ" then
        stemnumber = tonumber(mw.ustring.len(args['οπ']))	-- but if λήμμα= it MUST be the plural
    end
-- stems
    local stem = {}
    stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-stemnumber-1)
    stem["θ0"] = m_stems.word0(stem["θ"])
    if stem["θ0"] == nil then return stem["θ"] end
    stem["θ1"] = m_stems.word1(stem["θ0"])
    stem["θ2"] = m_stems.word2(stem["θ0"])	-- για τον πληθ  -ούμενες, -όμεν-ες του [[κατηγορουμένη]] -- [[Πρότυπο:el-κλίση-'κατηγορουμένη']]
-- συνδυασμοί
    for  i, ptwsi in ipairs({'οε', 'γε', 'γε2', 'αε', 'κε', 'κε2', 'κε0', 'οπ', 'οπ2', 'γπ', 'γπ0', 'γπ2', 'απ', 'απ2'}) do
       if args[ptwsi .. 'θ'] == nil then args[ptwsi .. 'θ'] = "θ" end
    end
    for  i, ptwsi in ipairs({'γε', 'γε2', 'γπ', 'γπ0', 'γπ2'}) do
       if args[ptwsi] ~= nil then
          if m_stems.hasaccent(args[ptwsi]) then args[ptwsi .. 'θ'] = "θ0" end
       end
    end
    if args['οπ'] == "άδες" then
    args['οπθ'] = "θ0"
    args['απθ'] = "θ0"
    end
    if args['οπ2'] == "άδες" or args['οπ2'] == "αίοι" then
    args['οπ2θ'] = "θ0"
    args['απ2θ'] = "θ0"
    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

-- ---------- Χτίσιμο των τύπων - Generate forms ----------------- --
	---- ονομαστική ενικού
    args['οεΛ'] = linkcontrol2(stem[args['οεθ']], args['οε'])
    
    ---- γενική ενικού
    if (args['γε'] == "-" or args['γε'] == "" or args['γε'] == nil) then
    	args['αγε'] = '-'
        args['γεΛ'] = '<span style="color:#dddddd;">&mdash;</span>'
    else
        args['γεΛ'] = linkcontrol2(stem[args['γεθ']], args['γε'])
    end
    if args['γε0'] ~= nil then
        args['γεΛ'] = '(' .. linkcontrol2(stem[args['γε0θ']], args['γε0']) .. ')' -- όπως στο [[λιοστάσι]]
    end
-- [[Άρης]] γε2θ=Άρε γε2=ος
    if args['γε2'] ~=nil and args['γε2'] ~= "" and args['γε2'] ~= "-" then
    	if args['γε2θ'] ~= '' and args['γε2θ'] ~= nil then args['γε2θ'] = args['γε2θ'] end -- ?? why it does not work?
    	-- 2 γενικές, 2 άρθρα για μερικά κοινού γένους. Δεν θέλω το &
    	if args['α2γε'] ~= '' and args['α2γε'] ~= nil then
    		args['γε2Λ'] = "<br />" .. linkcontrol2(stem[args['γε2θ']], args['γε2']) -- όπως στο [[συγγραφέας]] και τα κοινού γένους με ΔΕΥΤΕΡΟ άρθρο δίπλα τους
    	else
        args['γε2Λ'] = "<br />&&nbsp;" .. linkcontrol2(stem[args['γε2θ']], args['γε2']) -- όπως στο [[λύση]]
        end
    else 
        args['γε2Λ'] = ''
    end
    args['γεΛ'] = args['γεΛ'] .. args['γε2Λ']   
    
	---- αιτιατική ενικού
    args['αεΛ'] = linkcontrol2(stem[args['αεθ']], args['αε'])
    if args['αε2'] ~= '' and args['αε2'] ~= nil then		-- όπως τον κατάπλουν στο [[κατάπλους]], function 'απόπλους'
        args['αε2Λ'] = "<br />&&nbsp;" .. linkcontrol2(stem[args['αεθ']], args['αε2'])
    else
        args['αε2Λ'] = "" -- πρόβλημα 
    end

    args['αεΛ'] = args['αεΛ'] .. args['αε2Λ']

    ---- κλητική ενικού
    if args['κε0'] ~= nil then
        args['κεΛ'] = '(' .. linkcontrol2(stem[args['κε0θ']], args['κε0']) .. ')' -- όπως στο [[έρημος]]
    else
    args['κεΛ'] = linkcontrol2(stem[args['κεθ']], args['κε'])
    end
    if args['κε2'] ~= nil and args['κε2'] ~= "" and args['κε2'] ~= "-" then
    	if args['κε2'] == "0" then
    		args['κε2Λ'] = " (" .. create_link((stem['θ']), (stem_color(stem['θ']))) .. ')' -- όπως θε! στο [[θεός]]
    	else
        	args['κε2Λ'] = "<br />(" .. linkcontrol2(stem[args['κε2θ']], args['κε2']) .. ')' -- σε παρένθεση, όχι με αστερίσκο
        end
    else
        args['κε2Λ'] = ""
    end
    args['κεΛ'] = args['κεΛ'] .. args['κε2Λ']

    ---- ΟΝΟΜΑΣΤΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ
    if args['οπΛ'] == '-' then args['οπΛ'] = '<span style="color:#dddddd;">&mdash;</span>' else		-- function θάλασσα for [[Αθήνα]]
    	args['οπΛ'] = linkcontrol2(stem[args['οπθ']], args['οπ'])
    end
    if args['οπ2'] ~= nil and args['οπ2'] ~= "" and args['οπ2'] ~= "-" then
        args['οπ2Λ'] = "<br />&&nbsp;" .. linkcontrol2(stem[args['οπ2θ']], args['οπ2']) -- όπως στο [[πραματευτής]]
    else
        args['οπ2Λ'] = ''
    end
    args['οπΛ'] = args['οπΛ'] .. args['οπ2Λ']
    args['κπΛ'] = args['οπΛ']

    ---- ΓΕΝΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ
    -- Προσοχή: Να μην εξαφανίζει το άρθρο όταν υπάρχει γπ0 αντί για γπ όπως [[νότα]]
    -- Προσοχή: Να μην εξαφανίζει το άρθρο όταν υπάρχει γπ2 με γπ=- όπως 
    if args['γπ'] == "-"  and (args['γπ2'] == '' or args['γπ2'] == nil) then	
    	args['αγπ'] = '-'
        args['γπΛ'] = '<span style="color:#dddddd;">&mdash;</span>'
    elseif args['γπ'] == "-"  and (args['γπ2'] ~= '' or args['γπ2'] ~= nil) then
        args['γπΛ'] = '<span style="color:#dddddd;">&mdash;</span>'
    else
        args['γπΛ'] = linkcontrol2(stem[args['γπθ']], args['γπ'])
    end
    if args['γπ0'] ~= nil then
        args['γπΛ'] = '(' .. linkcontrol2(stem[args['γπ0θ']], args['γπ0']) .. ')' -- όπως στο [[σκόνη]]
    end
    if args['γπ2'] ~= '' and args['γπ2'] ~= nil and args['γπ2'] ~= "-" then
        args['γπ2Λ'] = linkcontrol2(stem[args['γπ2θ']], args['γπ2'])  -- όπως στο [[καρδινάλιος]]
        if args['γπΛ'] ~= "" then
            args['γπ2Λ'] = "<br />&&nbsp;" .. args['γπ2Λ']
        end
    else
        args['γπ2Λ'] = ""
    end

    args['γπΛ'] = args['γπΛ'] .. args['γπ2Λ']

    ---- ΑΙΤΙΑΤΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ
    if args['απΛ'] == '-' then args['απΛ'] = '<span style="color:#dddddd;">&mdash;</span>' else		-- function θάλασσα for [[Αθήνα]]
    	args['απΛ'] = linkcontrol2(stem[args['απθ']], args['απ'])
    end
    if args['απ2'] ~=nil and args['απ2'] ~= "" and args['απ2'] ~= "-" then
    	-- 2 αιτιατ. πληθ, 2 άρθρα για μερικά κοινού γένους [[βιομήχανος]]. Δεν θέλω το &
    	if args['α2απ'] ~= '' and args['α2απ'] ~= nil then
    		args['απ2Λ'] = "<br />" .. linkcontrol2(stem[args['απ2θ']], args['απ2']) -- όπως στο [[βιομήχανος]] και τα κοινού γένους με ΔΕΥΤΕΡΟ άρθρο δίπλα τους
    	else
        args['απ2Λ'] = "<br />&&nbsp;" .. linkcontrol2(stem[args['απ2θ']], args['απ2']) -- όπως στο [[καρδινάλιος]]
        end
    else
        args['απ2Λ'] = ''
    end
    args['απΛ'] = args['απΛ'] .. args['απ2Λ']
    
    ---- ΚΛΗΤΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ
    -- όπως η αιτιατική πληθυντικού

    return fulltable(args)
end

--------------------------------------------------------------------------
--             6. klisi2 - double stems (infix added)                   --
--------------------------------------------------------------------------
-- by Flyax and Xoristzatziki (2015-2018)
-- alterations: 2020


--κλίση ουδετέρων ουσιαστικών που παίρνουν επιπλέον σύμφωνο στο «θέμα», τσάι, προϊόν, μέλλον
klisi2 = function(args)
-- lemma
	local lemma = args['λήμμα'] or ''
	PAGENAME = mw.title.getCurrentTitle().text
	if lemma  == '' then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" ) 
		else lemma = args['λήμμα']
	end 	
-- stems if lemma is in plural number (οπ = nom.pl)
    local stemnumber = 0
    if args['α'] ~= "πλ" or args['α2'] ~= "πλ" then
        stemnumber = tonumber(mw.ustring.len(args['οε']))
    end
    if args['α'] == "πλ" or args['α2'] == "πλ" then
        stemnumber = tonumber(mw.ustring.len(args['οπ']))	-- but if λήμμα= it MUST be the plural
    end
    local stem = {}
    stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-stemnumber-1)
    stem["θ0"] = m_stems.word0(stem["θ"])
    stem["θ1"] = m_stems.word1(stem["θ0"])

    args['οεΛ'] = linkcontrol2(stem[args['οεθ']], args['οε'])
-- γε=- όπως στο [[σπετζοφάι]]
    if (args['γε'] == "-" or args['γε'] == "" or args['γε'] == nil) then
    	args['αγε'] = '-'
        args['γεΛ'] = '<span style="color:#dddddd;">&mdash;</span>'
    else
        args['γεΛ'] = linkcontrol3(stem[args['γεθ']], args['πρόσφ'], args['γε'])
    end
    args['αεΛ'] = args['οεΛ']
    args['κεΛ'] = args['οεΛ']
    args['οπΛ'] = linkcontrol3(stem[args['οπθ']], args['πρόσφ'], args['οπ'])
-- γπ==ιών όπως στο [[μπόι]]
    if args['γπ0'] ~= "" and args['γπ0'] ~= nil then
    	args['γπΛ'] = '(' .. linkcontrol3(stem[args['γπθ']], args['πρόσφ'], args['γπ0']) .. ')'
-- γπ=- όπως στο [[σπετζοφάι]]
    elseif (args['γπ'] == "-" or args['γπ'] == "" or args['γπ'] == nil) then
    	args['αγπ'] = '-'
        args['γπΛ'] = '<span style="color:#dddddd;">&mdash;</span>'
    else
        args['γπΛ'] = linkcontrol3(stem[args['γπθ']], args['πρόσφ'], args['γπ'])
    end
    args['απΛ'] = args['οπΛ']
    args['κπΛ'] = args['οπΛ']

    return fulltable(args)
end


--------------------------------------------------------------------------
--       7.  FREE TABLE whole words or stems, endings, etc              --
--------------------------------------------------------------------------
-- by Sarri.greek 2020
-- [[Πρότυπο:el-nouns-decl]]
--[=[
* για τους κωδικούς καταλήξεων με μηδέν (οε0=, γε0=, αε0=...) θεωρούμε, ότι το θέμα παραμένει όπως οε8, γε8, αε8, ...
	Αν είναι αλλιώτικο, τότε χρησιμοποιούμε παράμετρο για ολόκληρη τη λέξη. Π.χ. γεΛ=([[....]])
]=]--

export.free = function(frame)
--local args = frame:getParent().args	-- for Templates
local args = frame.args		-- invoke

-- lemma. This is needed, to define the feminine accusative singular article (required Module:tin)
	local lemma = args['λήμμα'] or ''
	PAGENAME = mw.title.getCurrentTitle().text
	if lemma  == '' then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" ) 
		else lemma = args['λήμμα']
	end 	
-- stems
    local stem = {}
    minusletters = args['μείον'] or ''
    if args['μείον'] == '' and args['μείον'] == nil then args['μείον'] = 2 end
    stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-(minusletters+1))
    stem["θ0"] = m_stems.word0(stem["θ"])
    stem["θ1"] = m_stems.word1(stem["θ0"])
    stem["θ2"] = m_stems.word2(stem["θ0"])

--
	args['οεΛ'] = args['οεΛ'] or ''
	args['γεΛ'] = args['γεΛ'] or ''
	args['αεΛ'] = args['αεΛ'] or ''
	args['κεΛ'] = args['κεΛ'] or ''
	args['οπΛ'] = args['οπΛ'] or ''
	args['γπΛ'] = args['γπΛ'] or ''
	args['απΛ'] = args['απΛ'] or ''
	args['κπΛ'] = args['κπΛ'] or ''
--
	args['οε2Λ'] = args['οε2Λ'] or ''
	args['γε2Λ'] = args['γε2Λ'] or ''
	args['αε2Λ'] = args['αε2Λ'] or ''
	args['κε2Λ'] = args['κε2Λ'] or ''
	args['οπ2Λ'] = args['οπ2Λ'] or ''
	args['γπ2Λ'] = args['γπ2Λ'] or ''
	args['απ2Λ'] = args['απ2Λ'] or ''
	args['κπ2Λ'] = args['κπ2Λ'] or ''
-- για γε, οπ, γπ, απ, κπ
	args['πρόσφ'] = args['πρόσφ'] or ''
	args['πρόσφ2'] = args['πρόσφ2'] or ''
	args['κοινό1'] = args['κοινό1'] or ''
	args['κοινό'] = args['κοινό'] or ''


-- ονομαστική ενικού PLUS stem only, ending='0' όπως [[πυρ]]
	args['οεΛκειμ'] = args['οεΛκειμ'] or ''
	args['οε2Λκειμ'] = args['οε2Λκειμ'] or ''
	
	if args['οεθ'] == '' or args['οεθ'] == nil then
		args['οεθ'] = stem["θ"]
	else args['οεθ'] = args['οεθ']
	end

	if args['οε'] == '0' then	-- το πυρ
	args['οεΛ'] = args['κοινό1'] .. create_link((args['οεθ']), (stem_color(args['οεθ']))) .. args['κοινό'] .. args['οεΛκειμ']
	end

	if args['οε'] ~= '-' and args['οε'] ~= '0' and args['οε'] ~= '' and args['οε'] ~= nil then
   	args['οεΛ'] = args['κοινό1'] .. create_link((args['οεθ'] .. args['οε']), (stem_color(args['οεθ']) .. ending_color(args['οε']))) .. args['κοινό'] .. args['οεΛκειμ']
   	elseif args['οε'] == '-' then
   		args['οεΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['οεΛκειμ']
   	end
   	
   	if args['οε2'] ~= '-' and args['οε2'] ~= '' and args['οε2'] ~= nil then
	args['οε2Λ'] = '<br />&&nbsp;' .. create_link((args['οε2θ'] .. args['οε2']), (stem_color(args['οε2θ']) .. ending_color(args['οε2']))) .. args['οε2Λκειμ']
   	elseif args['οε2'] == '-' then
   		args['οε2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['οε2Λκειμ']
   	end

	if args['οε0'] ~= '' and args['οε0'] ~= nil then
	args['οεΛ'] = '(' .. args['κοινό1'] .. create_link((args['οεθ'] .. args['οε0']), (stem_color(args['οεθ']) .. ending_color(args['οε0']))) .. args['κοινό'] .. ')' .. args['οεΛκειμ']
	end
   
    args['οεΛ'] = args['οεΛ'] .. args['οε2Λ']   


-- γενική ενικού PLUS infix, PLUS stem only, ending='0' όπως [[νους]] του νου
	args['γεΛκειμ'] = args['γεΛκειμ'] or ''
	args['γε2Λκειμ'] = args['γε2Λκειμ'] or ''
	
	if args['γεθ'] == '' or args['γεθ'] == nil then
		args['γεθ'] = stem["θ"]
	else args['γεθ'] = args['γεθ']
	end

	if args['γε'] == '0' then	-- ο [[νους]], του νου
	args['γεΛ'] = args['κοινό1'] .. create_link((args['γεθ']), (stem_color(args['γεθ']))) .. args['κοινό'] .. args['γεΛκειμ']
	end

	if args['γε'] ~= '-' and args['γε'] ~= '0' and args['γε'] ~= '' and args['γε'] ~= nil then
   	args['γεΛ'] = args['κοινό1'] .. create_link((args['γεθ'] .. args['πρόσφ'] .. args['γε']), (stem_color(args['γεθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['γε']))) .. args['κοινό'] .. args['γεΛκειμ']
   	elseif args['γε'] == '-' then
   		args['γεΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['γεΛκειμ']
   	end
   	
   	if args['γε2'] ~= '-' and args['γε2'] ~= '' and args['γε2'] ~= nil then
-- δεύτερη γραμμή άρθρου για κοινού γένους ([[συγγραφέας]]) με 2 άρθρα, δεν θέλω το &
		if args['α2γε'] ~= '' and args['α2γε'] ~= nil then
	args['γε2Λ'] = '<br />' .. create_link((args['γε2θ'] .. args['πρόσφ2'] .. args['γε2']), (stem_color(args['γε2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['γε2']))) .. args['γε2Λκειμ']
   		else
	args['γε2Λ'] = '<br />&&nbsp;' .. create_link((args['γε2θ'] .. args['πρόσφ2'] .. args['γε2']), (stem_color(args['γε2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['γε2']))) .. args['γε2Λκειμ']
   		end
   	elseif args['γε2'] == '-' then
   		args['γε2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['γε2Λκειμ']
   	end

	if args['γε0'] ~= '' and args['γε0'] ~= nil then
	args['γεΛ'] = '(' .. args['κοινό1'] .. create_link((args['γεθ'] .. args['πρόσφ'] .. args['γε0']), (stem_color(args['γεθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['γε0']))) .. args['κοινό'] .. ')' .. args['γεΛκειμ']
	end
   
    args['γεΛ'] = args['γεΛ'] .. args['γε2Λ']   


-- αιτιατική ενικού PLUS stem only, ending='0' όπως [[ισχύς]], την ισχύ
	args['αεΛκειμ'] = args['αεΛκειμ'] or ''
	args['αε2Λκειμ'] = args['αε2Λκειμ'] or ''
	
	if args['αεθ'] == '' or args['αεθ'] == nil then
		args['αεθ'] = stem["θ"]
	else args['αεθ'] = args['αεθ']
	end

	if args['αε'] == '0' then	-- την ισχύ, τον ιχθύ
	args['αεΛ'] = args['κοινό1'] .. create_link((args['αεθ']), (stem_color(args['αεθ']))) .. args['κοινό'] .. args['αεΛκειμ']
	end
	
	if args['αε'] ~= '-' and args['αε'] ~= '0' and args['αε'] ~= '' and args['αε'] ~= nil then
   	args['αεΛ'] = args['κοινό1'] .. create_link((args['αεθ'] .. args['αε']), (stem_color(args['αεθ']) .. ending_color(args['αε']))) .. args['κοινό'] .. args['αεΛκειμ']
   	elseif args['αε'] == '-' then
   		args['αεΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['αεΛκειμ']
   	end

   	if args['αε2'] ~= '-' and args['αε2'] ~= '' and args['αε2'] ~= nil then
	args['αε2Λ'] = '<br />&&nbsp;' .. create_link((args['αε2θ'] .. args['αε2']), (stem_color(args['αε2θ']) .. ending_color(args['αε2']))) .. args['αε2Λκειμ']
   	elseif args['αε2'] == '-' then
   		args['αε2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['αε2Λκειμ']
   	end

	if args['αε0'] ~= '' and args['αε0'] ~= nil then
	args['αεΛ'] = '(' .. args['κοινό1'] .. create_link((args['αεθ'] .. args['αε0']), (stem_color(args['αεθ']) .. ending_color(args['αε0']))) .. args['κοινό'] .. ')' .. args['αεΛκειμ']
	end
   
    args['αεΛ'] = args['αεΛ'] .. args['αε2Λ']   



-- κλητική ενικού PLUS stem only, ending='0' όπως [[ισχύς]], ω ισχύ!
	args['κεΛκειμ'] = args['κεΛκειμ'] or ''
	args['κε2Λκειμ'] = args['κε2Λκειμ'] or ''
	
	if args['κεθ'] == '' or args['κεθ'] == nil then
		args['κεθ'] = stem["θ"]
	else args['κεθ'] = args['κεθ']
	end

	if args['κε'] == '0' then	-- ω ισχύ, ω ιχθύ
	args['κεΛ'] = args['κοινό1'] .. create_link((args['κεθ']), (stem_color(args['κεθ']))) .. args['κοινό'] .. args['κεΛκειμ']
	end
	
	if args['κε'] ~= '-'  and args['κε'] ~= '0' and args['κε'] ~= '' and args['κε'] ~= nil then
   	args['κεΛ'] = args['κοινό1'] .. create_link((args['κεθ'] .. args['κε']), (stem_color(args['κεθ']) .. ending_color(args['κε']))) .. args['κοινό'] .. args['κεΛκειμ']
   	elseif args['κε'] == '-' then
   		args['κεΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['κεΛκειμ']
   	end
   	
   	if args['κε2'] ~= '-' and args['κε2'] ~= '' and args['κε2'] ~= nil then
	args['κε2Λ'] = '<br />&&nbsp;' .. create_link((args['κε2θ'] .. args['κε2']), (stem_color(args['κε2θ']) .. ending_color(args['κε2']))) .. args['κε2Λκειμ']
   	elseif args['κε2'] == '-' then
   		args['κε2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['κε2Λκειμ']
   	end

	if args['κε0'] ~= '' and args['κε0'] ~= nil then
	args['κεΛ'] = '(' .. args['κοινό1'] .. create_link((args['κεθ'] .. args['κε0']), (stem_color(args['κεθ']) .. ending_color(args['κε0']))) .. args['κοινό'] .. ')' .. args['κεΛκειμ']
	end
   
    args['κεΛ'] = args['κεΛ'] .. args['κε2Λ']  



-- ΟΝΟΜΑΣΤΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ PLUS infix
	args['οπΛκειμ'] = args['οπΛκειμ'] or ''
	args['οπ2Λκειμ'] = args['οπ2Λκειμ'] or ''
	
	if args['οπθ'] == '' or args['οπθ'] == nil then
		args['οπθ'] = stem["θ"]
	else args['οπθ'] = args['οπθ']
	end

	if args['οπ'] ~= '-' and args['οπ'] ~= '' and args['οπ'] ~= nil then
   	args['οπΛ'] = args['κοινό1'] .. create_link((args['οπθ'] .. args['πρόσφ'] .. args['οπ']), (stem_color(args['οπθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['οπ']))) .. args['κοινό'] .. args['οπΛκειμ']
   	elseif args['οπ'] == '-' then
   		args['οπΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['οπΛκειμ']
   	end
   	
   	if args['οπ2'] ~= '-' and args['οπ2'] ~= '' and args['οπ2'] ~= nil then
	args['οπ2Λ'] = '<br />&&nbsp;' .. create_link((args['οπ2θ'] .. args['πρόσφ2'] .. args['οπ2']), (stem_color(args['οπ2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['οπ2']))) .. args['οπ2Λκειμ']
   	elseif args['οπ2'] == '-' then
   		args['οπ2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['οπ2Λκειμ']
   	end

	if args['οπ0'] ~= '' and args['οπ0'] ~= nil then
	args['οπΛ'] = '(' .. args['κοινό1'] .. create_link((args['οπθ'] .. args['πρόσφ'] .. args['οπ0']), (stem_color(args['οπθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['οπ0']))) .. args['κοινό'] .. ')' .. args['οπΛκειμ']
	end
   
    args['οπΛ'] = args['οπΛ'] .. args['οπ2Λ']   


-- ΓΕΝΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ PLUS infix  Check [[κανάγιας]]
	args['γπΛκειμ'] = args['γπΛκειμ'] or ''
	args['γπ2Λκειμ'] = args['γπ2Λκειμ'] or ''
	
	if args['γπθ'] == '' or args['γπθ'] == nil then
		args['γπθ'] = stem["θ"]
	else args['γπθ'] = args['γπθ']
	end

	-- όπως [[κανάγιας]], των -  + check [[ναύλος]]
	if args['γπ'] ~= '-' and args['γπ'] ~= '' and args['γπ'] ~= nil then
   	args['γπΛ'] = args['κοινό1'] .. create_link((args['γπθ'] .. args['πρόσφ'] .. args['γπ']), (stem_color(args['γπθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['γπ']))) .. args['κοινό'] .. args['γπΛκειμ']
   	elseif args['γπ'] == '-' then
   		args['γπΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['γπΛκειμ']
   	end
   	
   	if args['γπ2'] ~= '-' and args['γπ2'] ~= '' and args['γπ2'] ~= nil then
	args['γπ2Λ'] = '<br />&&nbsp;' .. create_link((args['γπ2θ'] .. args['πρόσφ2'] .. args['γπ2']), (stem_color(args['γπ2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['γπ2']))) .. args['γπ2Λκειμ']
   	elseif args['γπ2'] == '-' then
   		args['γπ2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['γπ2Λκειμ']
   	end

	if args['γπ0'] ~= '' and args['γπ0'] ~= nil then
	args['γπΛ'] = '(' .. args['κοινό1'] .. create_link((args['γπθ'] .. args['πρόσφ'] .. args['γπ0']), (stem_color(args['γπθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['γπ0']))) .. args['κοινό'] .. ')' .. args['γπΛκειμ']
	end

    args['γπΛ'] = args['γπΛ'] .. args['γπ2Λ']   


-- ΑΙΤΙΑΤΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ PLUS infix
	args['απΛκειμ'] = args['απΛκειμ'] or ''
	args['απ2Λκειμ'] = args['απ2Λκειμ'] or ''
	
	if args['απθ'] == '' or args['απθ'] == nil then
		args['απθ'] = stem["θ"]
	else args['απθ'] = args['απθ']
	end

	if args['απ'] ~= '-' and args['απ'] ~= '' and args['απ'] ~= nil then
   	args['απΛ'] = args['κοινό1'] .. create_link((args['απθ'] .. args['πρόσφ'] .. args['απ']), (stem_color(args['απθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['απ']))) .. args['κοινό'] .. args['απΛκειμ']
   	elseif args['απ'] == '-' then
   		args['απΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['απΛκειμ']
   	end
   	
   	if args['απ2'] ~= '-' and args['απ2'] ~= '' and args['απ2'] ~= nil then
    	-- 2 αιτιατ. πληθ, 2 άρθρα για μερικά κοινού γένους [[βιομήχανος]]. Δεν θέλω το &
    	if args['α2απ'] ~= '' and args['α2απ'] ~= nil then
		args['απ2Λ'] = '<br />' .. create_link((args['απ2θ'] .. args['πρόσφ2'] .. args['απ2']), (stem_color(args['απ2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['απ2']))) .. args['απ2Λκειμ']
    	else
        args['απ2Λ'] = '<br />&&nbsp;' .. create_link((args['απ2θ'] .. args['πρόσφ2'] .. args['απ2']), (stem_color(args['απ2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['απ2']))) .. args['απ2Λκειμ']
        end
   	elseif args['απ2'] == '-' then
   		args['απ2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['απ2Λκειμ']
   	end

	if args['απ0'] ~= '' and args['απ0'] ~= nil then
	args['απΛ'] = '(' .. args['κοινό1'] .. create_link((args['απθ'] .. args['πρόσφ'] .. args['απ0']), (stem_color(args['απθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['απ0']))) .. args['κοινό'] .. ')' .. args['απΛκειμ']
	end
   
    args['απΛ'] = args['απΛ'] .. args['απ2Λ']   


-- ΚΛΗΤΙΚΗ ΠΛΗΘΥΝΤΙΚΟΥ PLUS infix
	args['κπΛκειμ'] = args['κπΛκειμ'] or ''
	args['κπ2Λκειμ'] = args['κπ2Λκειμ'] or ''
	
	if args['κπθ'] == '' or args['κπθ'] == nil then
		args['κπθ'] = stem["θ"]
	else args['κπθ'] = args['κπθ']
	end

	if args['κπ'] ~= '-' and args['κπ'] ~= '' and args['κπ'] ~= nil then
   	args['κπΛ'] = args['κοινό1'] .. create_link((args['κπθ'] .. args['πρόσφ'] .. args['κπ']), (stem_color(args['κπθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['κπ']))) .. args['κοινό'] .. args['κπΛκειμ']
   	elseif args['κπ'] == '-' then
   		args['κπΛ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['κπΛκειμ']
   	end
   	
   	if args['κπ2'] ~= '-' and args['κπ2'] ~= '' and args['κπ2'] ~= nil then
	args['κπ2Λ'] = '<br />&&nbsp;' .. create_link((args['κπ2θ'] .. args['πρόσφ2'] .. args['κπ2']), (stem_color(args['κπ2θ']) .. infix_color(args['πρόσφ2']) .. ending_color(args['κπ2']))) .. args['κπ2Λκειμ']
   	elseif args['κπ2'] == '-' then
   		args['κπ2Λ'] = '<span style="text-align:center; color:#dddddd;">&mdash;</span>' .. args['κπ2Λκειμ']
   	end

	if args['κπ0'] ~= '' and args['κπ0'] ~= nil then
	args['κπΛ'] = '(' .. args['κοινό1'] .. create_link((args['κπθ'] .. args['πρόσφ'] .. args['κπ0']), (stem_color(args['κπθ']) .. infix_color(args['πρόσφ']) .. ending_color(args['κπ0']))) .. args['κοινό'] .. ')' .. args['κπΛκειμ']
	end
   
    args['κπΛ'] = args['κπΛ'] .. args['κπ2Λ']   


-- 2ος πληθυντικός	
	args['οπΛ2'] = args['οπΛ2'] or ''
	args['γπΛ2'] = args['γπΛ2'] or ''
	args['απΛ2'] = args['απΛ2'] or ''
	args['κπΛ2'] = args['κπΛ2'] or ''
return fulltable(args)
end


--------------------------------------------------------------------------
--          8. SPECIFIC TEMPLAGES / ΕΠΙΜΕΡΟΥΣ ΠΡΟΤΥΠΑ                   --
--------------------------------------------------------------------------
-- =================== α...ω ======================= --

-- see [[Module:el-nouns-decl/functions]]

return export