Documentation for this module may be created at Module:xx/τεκμηρίωση

-- [[Module:xx/param]] - [[Module:xx/1]] - [[Template:xx]]

-- αρχαία ελληνικά ρήματα - Conjugation of verbs for Ancient Greek, Hellenistic Koine
-- Also can be used for Mediaeval Greek and other polytonic versions of Greek.
-- Editors can suppress the module parameters (mod-xx=) by writing xx= (see /param page)
--[=[
STRUCTURE: 
	1. required modules, stem production
	2. links and style
	3. the TABLE
	4. Categories (only for main form)
	5. decl links to /param page (basic function for declensions in the functionpages)
	6. free links to /param page (invoke from pages)
EDITOR_MUST_DEFINE δίχρ= #1λύω #1καταφέρω
]=]--
--[=[ EXPLANATIONS
Abbreviations of parameters
* CELLS: initial greek letters for person+number - mood e.g. 1ε-ορ (οριστική) 2ε-υπ (υποτακτική) 3π-ευ (3 πληθυντικός ευκτική)
	ε = ενικός π = πληθυντικός δ = δυϊκός ορ=οριστική υπ=υποτακτική ευ=ευκτική
	απρ=απαρέμφατο μ-αρσ=μετοχή αρσενικό μ-θηλ μ-ουδ
	Each cell may have two word and a note
* WORDS suffix -λ = λέξη e.g. 1ε-ορ-λ is the first word of the cell.
	1ε-ορ2-λ is the second word of the cell
	1ε-ορ-σημ is the note for the 1st word, 1ε-ορ2-σημ note for the 2nd word
* STEMS -θ suffix (θέμα) = e.g. 1ε-ορ-θ is the stem of 1st person singular indicative
	and + = WITH prosody to be viewed in the link
* ENDINGS -κ suffix (κατάληξη) .e.g. 1ε-ορ-κ is the ending of the above, 1ε-ορ-κ+ is its prosody
* mod- Prefix for params defined IN the module at function pages
	Without it, are the editor's choice IN the page
STEM formation: (default stem is lemma minus 1 letter from the end)
	stem['θ'] = stem as found in lemma 
	θοξ = convert okseia to perispomeni
	θπ = convert perispomeni to okseia
	θ1 = stem with accent okseia on its last syllble θ1οξ = with okseia θ1π = with perispomeni
	θ2 = stem with accent (always okseia) on its 2nd syllable from the end
	Stem is defined in functions, when singular and when plural if different from singular (pluarlia tantum)
	greek nu v = '1' for movable nu at some persons
]=]--



export = {} -- DO NOT write local export. It does not work.
--------------------------------------------------------------------------
-- 1. STEM PRODUCTION, REQUIRED MODULES / ΔΗΜΙΟΥΡΓΙΑ ΘΕΜΑΤΩΝ, MODULES   --
--------------------------------------------------------------------------

-- ==================== REQUIRED ======================= --
languages = mw.loadData("Module:Languages") -- to choose grc, gkm, kath, greek languages with same script

module_path = 'Module:xx'

m_1 = require(module_path .. "/1") 
-- cannot call all subpages directly from here. Each one will call the next:
-- here we call m_1 = require(module_path .. "/1") -- 1st declension functions
		-- m_1 calls: m_2 = require(module_path .. "/2") -- 2nd declension functions
			-- m_2 calls m_3 and so forth

-- do not name 'local': it does not work for module subpages
m_stems = require("Module:grk-stems") -- stem production: 
	--functions:
		-- word-3 subtracts 3 letters from end, word-2, word-1 etc
		-- word0 = no accent, word1 = accent on ultima,  word2 = accent on penultima
		-- example:  stem["θ0"] = m_stems.word0(stem["θ"])
		-- hasaccent = tells us if it has an accent

m_data = require("Module:grk-stems/data") -- for finding vowels, vowels+tonos etc
-- m_data.vowel_perispomeni = '[ᾶᾷἆᾆἇᾇῆῇἦᾖἧᾗῖἶἷῗῦὖὗῧῶῷὦᾦὧᾧἎᾎἏᾏἮᾞἯᾟἾἿὟὮᾮὯᾯ]' -- vowel+perispomeni
-- m_data.brachy_oxeia = '[έὲἔἒἕἓόὸὄὂὅὃΈῈἜἚἝἛΌῸὌὊὍὋ]' -- brachy+okseia or vareia
-- m_data.macron_oxeia = '[ήῄὴῂἤᾔἢᾒἥᾕἣᾓώῴὼῲὤᾤὢᾢὥᾥὣᾣΉῊἬᾜἪᾚᾚἭᾝἫᾛῺὬᾬὪᾪὭᾭὫᾫ]' -- macron+okseia or vareia
-- m_data.dichronon_oxeia = '[άὰἄἂἅἃίὶἴἲἵἳΐῒύὺὔὒὕὓΰῢΆᾺἌἊἍἋΊῚἼἺἽἻΎῪὝὛ]' -- dichronon+okseia or vareia
-- m_data.diphthong_tonos = '[αΑεΕηΗοΟ][ίὶῖἴἲἶἵἳἷΊῚἼἺἾἽἻἿύὺῦὔὒὖὑὕὓὗΎῪὝὛὟ]' -- diphthong+tonos (okseia, vareia, perispomeni) NOT dialytics ΐῒῗΰῢῧ 

-- call the page /param (it has all parameters) at bottom of this page

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

-- =========== standard colours for grc: LightSteelBlue =  #b0c4de 70%-75%-GREY-95%)  GREY c3
-- borders
c_border = '#ffffff' -- '#c9d7e8' -- same as c3 or stronger: same as c_1
c_bord = '#dddddd' -- outer border
c_bordR = '' -- right border: if there are more columns, it is soft c_bord. If it is the end, it is c_border
-- background colours
c_extra = '#93aed2'	-- dark  for extratitles
c_1 = '#a5bcd9'	-- main title
c_2 = '#c9d7e8'	-- subtitles 
c_2b = '#dbe4f0' -- side subtitles
c_3 = '#edf2f7'	-- the cells
c_4 = '#edf2f7' -- background for notes 
-- also, see below, at languages, special colours for different lang iso

-- font colours
c_ending = '#eb0000'			-- is DeepPink. For wikitext, template [[Πρότυπο:χκ]], never bold
c_stem = '#002000'			-- For wikitext, template [[Πρότυπο:χθ]], never bold
c_black = '#000000'			-- for subtitles
c_cccccc = '#cccccc'			-- not used here (possible for dubious forms)
c_green = '#008000'			-- not used here (possibly for infix)

-- =============== styles
-- for table style, cf. the beginning of fulltable

font_cell = "font-family:; letter-spacing:2px; padding-left:11px;"				-- tested, rejected: Palatino linotype; font-family:Times; 
fontsize_cell = "font-size:90%;"		-- tested: font-size:130%; (too big)

--  ============== apply font colours - εφαρμογή χρωμάτων
ending_color = function(suffix)
    return '<span style="color:' .. c_ending ..'; font-weight:normal;">' .. suffix .. '</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 exactly an inifix. It is extra letters of a 2nd stem.
    return '<span style="color:' .. c_stem ..'; font-weight:normal;">' .. infix .. '</span>'
end

-- for subtitles:
black_color = function(black_thing)
    return '<span style="color:' .. c_black ..'; font-weight:normal;">' .. black_thing .. '</span>'
end

-- not used:
--black_word = function(black_word)
--    return '<span style="color:' .. c_black ..'; font-weight:;">' .. black_word .. '</span>'
--end


-- ====================== Links for the words in the table
-- create_link = function(page, text) -- see at /param page

-- it controls stem (thema) and ending (suffix)
linkcontrol2 = function(thema, suffix)
	thema = thema or ''
	suffix = suffix or ''
	return create_link(thema .. suffix, stem_color(thema) ..  ending_color(suffix))
end

-- it controls stem, infixed letters and ending
linkcontrol3 = function(thema, infix, suffix)
	thema = thema or ''
	infix = infix or '' -- need for ὀστοῦν function
	suffix = suffix or ''
	return create_link(thema .. infix .. suffix, stem_color(thema) ..  infix_color(infix) .. ending_color(suffix))
end

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

-- if ambiguous dichrona vowels are not specified as macron or as brachy or as ?
-- όταν τα δίχρονα δεν έχουν προσωδία δίχρ=μ ή δίχρ=β ή δίχρ=?
-- use it with: if blahblah then return error_dichr end
error_dichr = function(errordichrstring)
	page = mw.title.getCurrentTitle()
	page.name = page.text:match( "^%s*(.-)%s*$" )
	if page.namespace == 0 then	-- Categories work only in MAIN namespace	
	return '<div style="font-size:15px; color:red;">* Θα πρέπει να ορίσουμε το δίχρονο φωνήεν με |δίχρ=β (βραχύ) ή |δίχρ=μ (μακρό).<br>Αν δεν υπάρχουν πληροφορίες, |δίχρ=? ή αβέβαιο. ([[Παράρτημα:Ρήματα (αρχαία ελληνικά)/προσωδία|Παράρτημα:προσωδία ρημάτων]])</div>'
	.. '[[Κατηγορία:Λήμματα χωρίς προσωδία σε δίχρονο φωνήεν (αρχαία ελληνικά)]]'	
	else
	return '<div style="font-size:15px; color:red;">* Θα πρέπει να ορίσουμε το δίχρονο φωνήεν με |δίχρ=β (βραχύ) ή |δίχρ=μ (μακρό).<br>Αν δεν υπάρχουν πληροφορίες, |δίχρ=? ή αβέβαιο.  ([[Παράρτημα:Ρήματα (αρχαία ελληνικά)/προσωδία|Παράρτημα:προσωδία ρημάτων]])</div>'
	end
end




--------------------------------------------------------------------------
--                        3. TABLE / ΠΙΝΑΚΑΣ                            --
--------------------------------------------------------------------------

fulltable = function(args)
-- table: -- note: in some browsers, border is not visible. Need border="1"
local float = args['float'] or ''
	if args['float'] == 'left' then
		-- border, here is seen only by border="1" or "2" thicekr
table_style2 = 'style="clear:left; float:left; position:relative; margin: 0px 1em 0em 0px; background:#ffffff; border:1px solid' 
.. '#dddddd' ..'; width:80%; text-align:left;" rules="none" cellpadding="0" cellspacing="0"'
	elseif args['float'] == 'right' then
table_style2 = 'style="clear:right; float:right; margin-left:0em; margin-bottom:0em;background:#ffffff; border:1px solid' 
.. '#dddddd' ..'; width:80%; text-align:right;" rules="none" cellpadding="0" cellspacing="0"'
	else -- default center
table_style2 = 'style="margin-left:auto; margin-right:auto; margin-bottom:0em; background:#ffffff; border:1px solid' 
.. '#dddddd' ..'; text-align:center;" align="center" rules="none" cellpadding="0" cellspacing="0"'	
	end


-- =============== LANGUAGES for categories and notes 
-- see /param page

-- =============== OTHER PARAMs
-- OTHER
	local dichr = args['δίχρ'] or ''		-- for dichronous (either macron or brachy δίχρ=β is brachy)
	cat_pos = args['μέρος λόγου'] or 'Ρήματα' -- pos: Part of Speech

	local syniz = args['συνίζ'] or ''
		if args['συνίζ'] ~= '' and args['συνίζ'] ~= nil then
			-- call function export.synizesis(arg) at [[Module:grk-stems]]
			-- and make myarg['συνίζ'] to be accepted here
			syniz = m_stems.synizesis(arg)
		end

-- typos, klisi (kinds of conjugations)
	typos = args['τύπος'] or ''
	local klisi = args['κλίση'] or ''		-- also see notes and Categories
		if args['κλίση'] == '1' then klisi = '1' end
		if args['κλίση'] == '2' then klisi = '2' end
		if args['κλίση'] == 'ανώμαλα' then klisi = 'ανώμαλα' end 
		if args['κλίση'] == '0' then klisi = 'ανώμαλα' end

-- row for extra subtitles (dialects or gender of numbers if different) 
	-- not needed, write note next to the existing subtitle of mood or tense

-- Σημείωση: οι παράμετρες .... = '' χρειάζονται αν ΔΕΝ υπάρχει το /param
--	local ghost_title_str = '' -- I CANNOT understand why 1st row at tables of Lua are so wrong. This is a trick to save the table.
	
	-- title and subtitles
	local tense_title_str = ''			-- title for the tense
	local ind_title_str = ''		-- title for indicative mood οριστική
	local sub_title_str = ''		-- title for subjunctive mood υποτακτική
	local opt_title_str = ''		-- title for optative mood ευκτική
	local imp_title_str = ''		-- title for imperative mood προστακτική
	local inf_title_str = ''		-- title for infinitivus απαρέμφατο
	local part_title_str = ''		-- title for participia μετοχές
	-- side subtitles
	local stem_title_str = ''				-- 1st cell to write the stem	
	local sg1_pron_str = ''	local sg2_pron_str = ''	local sg3_pron_str = ''	
	local pl1_pron_str = ''	local pl2_pron_str = ''	local pl3_pron_str = ''
	local du2_pron_str = ''	local du3_pron_str = ''
	local onomatic_title_str = ''			-- title: ονοματικοί τύποι
	-- cells
	local sg1_title_str = ''				-- 1st person singularis -- oops!!! CANNOT wrte 1sg
	local sg2_title_str = ''
	local sg3_title_str = ''
	local pl1_title_str = ''				-- 1st person pluralis
	local pl2_title_str = ''
	local pl3_title_str = ''
	local du2_title_str = ''				-- 2nd person dualis
	local du3_title_str = ''
	-- the actual cells
	local stem_str = ''
	local sg1_ind_str = ''	local sg2_ind_str = ''	local sg3_ind_str = ''
	local pl1_ind_str = ''	local pl2_ind_str = ''	local pl3_ind_str = ''
	local du2_ind_str = ''	local du3_ind_str = ''
	local sg1_sub_str = ''	local sg2_sub_str = ''	local sg3_sub_str = ''
	local pl1_sub_str = ''	local pl2_sub_str = ''	local pl3_sub_str = ''
	local du2_sub_str = ''	local du3_sub_str = ''
	local sg1_opt_str = ''	local sg2_opt_str = ''	local sg3_opt_str = ''
	local pl1_opt_str = ''	local pl2_opt_str = ''	local pl3_opt_str = ''
	local du2_opt_str = ''	local du3_opt_str = ''
	local sg1_imp_str = ''	local sg2_imp_str = ''	local sg3_imp_str = ''
	local pl1_imp_str = ''	local pl2_imp_str = ''	local pl3_imp_str = ''
	local du2_imp_str = ''	local du3_imp_str = ''
	local inf_str = ''
	local part_masc_str = ''	local part_fem_str = ''	local part_neu_str = ''

-- titles (title from module + extra title)
	args['mod-τίτλος'] = args['mod-τίτλος'] or ''			args['mod-τίτλος+'] =  '' -- (notes)
	args['χρόνος'] = args['χρόνος'] or ''	
	if args['lang_title'] ~= '' and args['lang_title'] ~=  nil then
		args['mod-τίτλος'] = args['lang_title'] .. '<br>' .. args['mod-τίτλος']
	end
	if args['χρόνος'] ~= '' and args['χρόνος'] ~=  nil then
		args['mod-τίτλος'] = args['mod-τίτλος'] .. ' <b>' .. args['χρόνος'] .. '</b> ' .. args['mod-τίτλος+']
	end	
	
	args['οριστική+'] = args['οριστική+'] or '' -- (notes)
	args['υποτακτική+'] = args['υποτακτική+'] or ''
	args['ευκτική+'] = args['ευκτική+'] or ''
	args['προστακτική+'] = args['προστακτική+'] or ''
	args['απαρέμφατο+'] = args['απαρέμφατο+'] or ''
	args['μετοχές+'] = args['μετοχές+'] or ''
--	if args['θέμα'] ~= '' and args['θέμα'] ~= nil then stem_str = '<span style="font-size:11px;"><i>θέμα:</i></span><br><span style="font-size:20px;">' .. args['θέμα'] .. '</span>' end
	if args['θέμα'] ~= '' and args['θέμα'] ~= nil then stem_str = '<span style="font-size:20px;">' .. args['θέμα'] .. '</span>' end

-- NOTES & whole LINES ================================================================
    local paratirisi = args['παρατήρηση'] or ''	 -- notes by editor
    local note = args['mod-σημ'] or  ''	-- standard notes by Template
    local appendix = ''				-- standard link for [[Παράρτημα:Ρήματα (αρχαία ελληνικά)]]
    local append = ''				-- link to gourp, category and specific paradigm at Appendix

-- NOT USED
-- group is a super-umbrella category if needed for similar declensions
    local group = args['ομάδα'] or ''    	-- at functions

-- cat_decl does ONE umbrella category for all the 'typos' categories in it, whatever PoS, whatever language (grc, koine)
	-- a class of a conjugation
    local cat_decl = args['κατηγορία κλίσης'] or ''    	--  at functions 
	if args['κατηγορία κλίσης'] == "-" or args['κατηγορία κλίσης'] == '' or args['κατηγορία κλίσης'] == nil then 
		cat_decl_str = '' -- control cat:
	end

-- NOT USED YET
-- όπως = a link to Appendix's clitic paradigm
    local as_in = args['όπως'] or ''
    	if as_in ~= '' and as_in ~= nil then
    		if args['κλίση'] == 'ανώμαλα' or args['κλίση'] == '0' then
    		as_in = ' όπως «[[Παράρτημα:Ρήματα (αρχαία ελληνικά)#ανώμαλα' .. as_in .. '|' .. as_in .. ']]»'
    		else -- klisi 1, 2
    		as_in = ' όπως «[[Παράρτημα:Ρήματα (αρχαία ελληνικά)/' .. klisi .. '#' .. as_in .. '|' .. as_in .. ']]»'
    		end
    	end
-- append WRITE the first part of the appendix line
	if args['κλίση'] == 'ανώμαλα' or args['κλίση'] == '0' then
		append = '[[Παράρτημα:Ρήματα (αρχαία ελληνικά)#ανώμαλα|ανώμαλη κλίση]], ' .. group .. cat_decl_str .. as_in .. ' - '
	elseif args['κλίση'] == '1' or args['κλίση'] == '2' then
		append = '[[Παράρτημα:Ρήματα (αρχαία ελληνικά)/' .. klisi .. '|' .. klisi .. 'η συζυγία]], ' .. group .. cat_decl_str .. as_in .. ' - '
	end

-- ============== note lines / σημείωση παρατήρηση
	if args['mod-σημ'] ~= '' or args['mod-σημ'] ~= nil then
		args['παρατήρηση'] = args['παρατήρηση'] or ''
		if args['παρατήρηση'] ~= '' or args['παρατήρηση'] ~= nil then
		paratirisi = [=[| colspan="5" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
		paratirisi = paratirisi .. note .. '<br>' .. args['παρατήρηση'] .. "\n"
		else
		paratirisi =  [=[| colspan="5" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
		paratirisi = paratirisi .. note .. "\n"
		end
	end
	if args['mod-σημ'] == '' or args['mod-σημ'] == nil then
		args['παρατήρηση'] = args['παρατήρηση'] or ''
		if args['παρατήρηση'] ~= '' or args['παρατήρηση'] ~= nil then
		paratirisi = [=[| 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 = ''
	else --if args['παράρτημα'] ~= '-'  and args['παράρτημα'] ~= '' and args['παράρτημα'] ~= nil  then
		appendix = [=[| 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


-- ========== CELLS  ===============================================  

		-- cannot put style here - write it at output. I will never understand how tables work in Lua.
		-- add a ghost-first thing
		
--		ghost_title_str = '' .. "\n"
		tense_title_str =  [=[| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_bord ..
		[=[; border-bottom:1px solid ]=] .. c_border ..
        [=[; text-align:center;" align="center" colspan="5" |  ]=] 
        .. args['mod-τίτλος'] .. "\n"
		stem_title_str =  [=[| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; text-align:center; width:75px;" align="center" |  ]=] 
        .. stem_str .. "\n"
-- adding spaces for better style (width does not work correctly)
		ind_title_str = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; width:; text-align:center; font-size:90%;" align="center"| ]=] 
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' 
        .. '[[οριστική|<span style="color:#000000;"><b>οριστική</b></span>]]' .. args['οριστική+']
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' ..  "\n"
		sub_title_str = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; width:; text-align:center; font-size:90%;" align="center"| ]=] 
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' 
        .. '[[υποτακτική|<span style="color:#000000;"><b>υποτακτική</b></span>]]' .. args['υποτακτική+']
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' .. "\n"
		opt_title_str = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; width:; text-align:center; font-size:90%;" align="center"| ]=] 
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' 
        .. '[[ευκτική|<span style="color:#000000;"><b>ευκτική</b></span>]]' .. args['ευκτική+']
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' ..  "\n"
		imp_title_str = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_bord ..
        [=[; width:; text-align:center; font-size:90%;" align="center"| ]=] 
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' 
        .. '[[προστακτική|<span style="color:#000000;"><b>προστακτική</b></span>]]' .. args['προστακτική+']
        .. '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' ..  "\n"

		onomatic_title_str = [=[| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; text-align:center; font-size:70%; line-height:100%; width:75px;" align="center" rowspan="2" | ]=] 
        .. 'ονοματικοί<br>τύποι' ..  "\n"  
		inf_title_str = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; text-align:center; font-size:90%;" align="center"| ]=] 
        .. '[[απαρέμφατο|<span style="color:#000000;"><b>απαρέμφατο</b></span>]]' .. args['απαρέμφατο+'] ..  "\n"
		part_title_str = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_bord ..
        [=[; text-align:center; font-size:90%;" align="center" colspan="3" | ]=] 
        .. '[[μετοχή|<span style="color:#000000;"><b>μετοχές</b></span>]]:   &nbsp;  &nbsp;  αρσενικό   &nbsp;  &nbsp;  θηλυκό   &nbsp;  &nbsp;  ουδέτερο'  
        .. args['μετοχές+'] ..  "\n"

		sg1_pron_str = [=[| style="background:]=] .. c_2b .. [=[;border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:90%; width:75px; ]=] .. 
        [=[" align="center" | [[ἐγώ|<span title="1ο πρόσωπο ενικού" style="color:black;">ἐγὼ</span>]]]=] ..  "\n"
		sg2_pron_str = [=[| style="background:]=] .. c_2b .. [=[;border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:90%; width:75px; ]=] .. 
        [=[" align="center" | [[σύ|<span title="2ο πρόσωπο ενικού" style="color:black;">σὺ</span>]]]=] ..  "\n"
		sg3_pron_str = [=[| style="background:]=] .. c_2b .. [=[;border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:90%; width:75px; ]=] .. 
        [=[" align="center" | [[οὖτος|<span title="3ο πρόσωπο ενικού" style="color:black;">οὖτος</span>]]]=] ..  "\n"
		pl1_pron_str = [=[| style="background:]=] .. c_2b .. [=[;border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:90%; width:75px; ]=] .. 
        [=[" align="center" | [[ἡμεῖς|<span title="1ο πρόσωπο πληθυντικού" style="color:black;">ἡμεῖς</span>]]]=] ..  "\n"
		pl2_pron_str = [=[| style="background:]=] .. c_2b .. [=[;border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:90%; width:75px; ]=] .. 
        [=[" align="center" | [[ὑμεῖς|<span title="2ο πρόσωπο πληθυντικού" style="color:black;">ὑμεῖς</span>]]]=] ..  "\n"
		pl3_pron_str = [=[| style="background:]=] .. c_2b .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:90%; width:75px; ]=] .. 
        [=[" align="center" | [[οὗτοι|<span title="3ο πρόσωπο πληθυντικού" style="color:black;">οὗτοι</span>]]]=] ..  "\n"
		du2_pron_str = [=[| style="background:]=] .. c_2b .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:70%; width:75px; ]=] .. 
        [=[" align="center" | 2ο δυϊκός ]=] ..  "\n"
		du3_pron_str = [=[| style="background:]=] .. c_2b .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:center; font-size:70%; width:75px;  ]=] .. 
        [=[" align="center" | 3ο δυϊκός ]=] ..  "\n"

		sg1_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; text-align:left; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['1ε-ορ'] ..  "\n"
		sg1_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
		.. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['1ε-υπ'] ..   "\n"    
        sg1_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['1ε-ευ'] ..  "\n"
        sg1_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. '<span style="color:#dddddd;">&mdash;</span>' ..  "\n"

        sg2_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2ε-ορ'] ..  "\n"
        sg2_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2ε-υπ'] ..   "\n"    
        sg2_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2ε-ευ'] ..  "\n"
        sg2_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2ε-πρ'] ..  "\n"

        sg3_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3ε-ορ'] ..  "\n"
        sg3_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3ε-υπ'] ..   "\n"    
        sg3_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3ε-ευ'] ..  "\n"
        sg3_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3ε-πρ'] ..  "\n"

        pl1_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['1π-ορ'] ..  "\n"
        pl1_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border 
        .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['1π-υπ'] ..   "\n"    
        pl1_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] 
        .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['1π-ευ'] ..  "\n"
        pl1_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] 
        .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. '<span style="color:#dddddd;">&mdash;</span>' ..  "\n"

        pl2_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2π-ορ'] ..  "\n"
        pl2_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2π-υπ'] ..   "\n"    
        pl2_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2π-ευ'] ..  "\n" 
        pl2_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['2π-πρ'] ..  "\n"  

        pl3_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3π-ορ'] ..  "\n"
        pl3_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3π-υπ'] ..   "\n"    
        pl3_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3π-ευ'] ..  "\n" 
        pl3_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['3π-πρ'] ..  "\n"  

        du2_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['2δ-ορ'] ..  "\n"     
        du2_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['2δ-υπ'] ..  "\n"     
        du2_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['2δ-ευ'] ..  "\n"   
        du2_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['2δ-πρ'] ..  "\n"    
        
        du3_ind_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['3δ-ορ'] ..  "\n"    
        du3_sub_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['3δ-υπ'] ..  "\n"  
        du3_opt_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['3δ-ευ'] ..  "\n"    
        du3_imp_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; font-size:70%; ]=] .. font_cell ..
        [=[" align="left" | ]=] .. args['3δ-πρ'] ..  "\n"    

        inf_str =  [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['απρ'] ..  "\n"
        part_masc_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['μ-αρσ'] ..  "\n"
        part_fem_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['μ-θηλ'] ..  "\n"
        part_neu_str = [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_border .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['μ-ουδ'] ..  "\n"
        
        
        
-- ============================= ROWS


-- NEED to put the style at the first row: it will not accept it above
	
    output = [=[{| ]=] .. table_style2 .. [=[
|-
| ]=]
	.. "\n" .. tense_title_str .. [=[|-
| ]=]
	.. "\n" .. stem_title_str .. ind_title_str .. sub_title_str .. opt_title_str .. imp_title_str .. [=[|-
| ]=]
	.. "\n" .. sg1_pron_str .. sg1_ind_str .. sg1_sub_str .. sg1_opt_str .. sg1_imp_str .. [=[|-
| ]=]
	.. "\n" .. sg2_pron_str .. sg2_ind_str .. sg2_sub_str .. sg2_opt_str .. sg2_imp_str .. [=[|-
| ]=]
	.. "\n" .. sg3_pron_str .. sg3_ind_str .. sg3_sub_str .. sg3_opt_str .. sg3_imp_str .. [=[|-
| ]=]
	.. "\n" .. pl1_pron_str .. pl1_ind_str .. pl1_sub_str .. pl1_opt_str .. pl1_imp_str .. [=[|-
| ]=]
	.. "\n" .. pl2_pron_str .. pl2_ind_str .. pl2_sub_str .. pl2_opt_str .. pl2_imp_str .. [=[|-
| ]=]
	.. "\n" .. pl3_pron_str .. pl3_ind_str .. pl3_sub_str .. pl3_opt_str .. pl3_imp_str .. [=[|-
|  ]=]
	.. "\n" .. du2_pron_str .. du2_ind_str .. du2_sub_str .. du2_opt_str .. du2_imp_str .. [=[|-
| ]=]
	.. "\n" .. du3_pron_str .. du3_ind_str .. du3_sub_str .. du3_opt_str .. du3_imp_str .. [=[|-
| ]=] 
	.. 	"\n" .. onomatic_title_str .. inf_title_str .. part_title_str .. [=[|-
| ]=] 
	..	"\n" .. inf_str .. part_masc_str .. part_fem_str .. part_neu_str .. [=[|-
| ]=] 
	..	"\n" .. paratirisi .. [=[|-
| ]=] 
	..	"\n"  .. appendix .. [=[|}]=]
	
--end -- close if mod-τίτλος
--------------------------------------------------------------------------
--                   4. Categories / Κατηγορίες                         --
--------------------------------------------------------------------------
-- Categories only in mainspace
local page = mw.title.getCurrentTitle()
page.name = page.text:match( "^%s*(.-)%s*$" )
if page.namespace == 0 then	-- Categories work only in MAIN namespace

-- nocat = 1
if (args['nocat'] ~= '' and args['nocat'] ~= nil) or (args['00'] ~= '' and args['00'] ~= nil) then
	output = output
else
	local group = args['ομάδα']	or ''	-- need to write it AGAIN HERE
	if args['ομάδα'] ~= '' and args['ομάδα'] ~= nil then
	output = output .. "[[Κατηγορία:" .. 'Ρήματα' .. " που κλίνονται όπως η ομάδα '" .. group .. "' (" .. 'αρχαία ελληνικά' .. ")]]"
	end
		
	--	if args['κατηγορία κλίσης'] ~= "-" and args['κατηγορία κλίσης'] ~= '' and args['κατηγορία κλίσης'] ~= nil then 

-- This is about ALL the conjugcation of the verb, not just active present (main lemma)
--	if args['τύπος'] ~= '' and args ['τύπος'] ~= nil and args ['τύπος'] ~= '-' then
--		output = output .. '[[Κατηγορία:' .. 'Ρήματα' .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ")]]"
--	end

-- κλίσεις 1, 2, 3 & βλ. ανώμ=1 & ανώμ+
	if args['κλίση'] == '1' then output = output .. '[[Κατηγορία:' .. 'Ρήματα' .. ' 1ης συζυγίας (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. 'Ρήματα' .. ' 2ης συζυγίας  (' .. lang_name .. ')]]' end
	if args['κλίση'] == '0' then output = output .. '[[Κατηγορία:' .. 'Ρήματα' .. ' ανώμαλα (' .. lang_name .. ')]]' end
	if args['κλίση'] == 'ανώμαλα' then output = output .. '[[Κατηγορία:' .. 'Ρήματα' .. ' ανώμαλα (' .. lang_name .. ')]]' end

-- ======= EXTRA CATEGORIES: zero is reserved for the module ONLY, not for editors
-- free category, ελεύθερη κατηγορία +part of speech + language
	if args['υποκατ'] ~= '' and args ['υποκατ'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ1'] ~= '' and args ['υποκατ1'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ1'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ2'] ~= '' and args ['υποκατ2'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ2'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ3'] ~= '' and args ['υποκατ3'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ3'] .. ' (' .. lang_name .. ')]]'
	end
	-- for Module use ONLY 
	if args['υποκατ0'] ~= '' and args ['υποκατ0'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ0'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ01'] ~= '' and args ['υποκατ01'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ01'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ02'] ~= '' and args ['υποκατ02'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ02'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ03'] ~= '' and args ['υποκατ03'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ03'] .. ' (' .. lang_name .. ')]]'
	end
	if args['υποκατ04'] ~= '' and args ['υποκατ04'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_pos .. ' ' .. args['υποκατ04'] .. ' (' .. lang_name .. ')]]'
	end
-- free category, ελεύθερη κατηγορία + language
	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
	if args['κατηγ3'] ~= '' and args['κατηγ3'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ3'] .. ' (' .. lang_name .. ')]]'
	end
	-- for Module use ONLY 
	if args['κατηγ0'] ~= '' and args['κατηγ0'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ0'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ01'] ~= '' and args['κατηγ01'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ01'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ02'] ~= '' and args['κατηγ02'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ02'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ03'] ~= '' and args['κατηγ03'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ03'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ04'] ~= '' and args['κατηγ04'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ04'] .. ' (' .. lang_name .. ')]]'
	end
	
-- free category, ελεύθερη κατηγορία NO LANGUAGE no restrictions, write free text
	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
	if args['cat-extra3'] ~= '' and args['cat-extra3'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra3'] .. ']]'
	end
	-- for Module use ONLY 
	if args['cat-extra0'] ~= '' and args['cat-extra0'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra0'] .. ']]'
	end
	if args['cat-extra01'] ~= '' and args['cat-extra01'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra01'] .. ']]'
	end
	if args['cat-extra02'] ~= '' and args['cat-extra02'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra02'] .. ']]'
	end
	if args['cat-extra03'] ~= '' and args['cat-extra03'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra03'] .. ']]'
	end
	if args['cat-extra04'] ~= '' and args['cat-extra04'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra04'] .. ']]'
	end

end -- CLOSE NOCAT
end -- CLOSE if namespace

return output -- close fulltable

end

----------------------------------------------------------------------------------------
--    GENERAL PATTERNS of DECLENSIONS  / ΜΗΤΡΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΚΛΙΣΕΩΝ
-----------------------------------------------------------------------------------------

--------------------------------5. DECL--------------------------------------
-- decl - it creates functions for specific declensions at the function pages
-- otherwise, it is EXACTLY like free
-----------------------------------------------------------------------------
decl = function(args)	-- creates functions at the /function page

-- all the declension parameters & functions: ======================
require ('Module:xx/param').param (args)

------------
return fulltable(args)
end




--------------------------------------------------------------------------
--            CREATE a DECLENSION TABLE directly at lemma page          --
--------------------------------------------------------------------------
-- invoke directly from pages -- use with caution; better created a function

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

-- all the declension parameters & functions: ======================
require ('Module:xx/param').param (args)

------------
return fulltable(args)
end


--------------------------------------------------------------------------
--           SPECIFIC TEMPLAGES / ΕΠΙΜΕΡΟΥΣ ΠΡΟΤΥΠΑ                     --
--------------------------------------------------------------------------
-- =============== conjugations 1-2 ================= --

-- see pages /1, /2

return export