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

--συναρτήσεις:
----etymel 
--για τα πρότυπα: αρχ, λενδ, μσν
----etymypok
--για το πρότυπο: υποκοριστικό του
--και τα συναφή (υποκ άκι κλπ.)
----etymother
--για το πρότυπο: ετυμ

local _module = {}
----------------------------------------
local languages = mw.loadData("Module:Languages")

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

--για τα πρότυπα: αρχ, λενδ, μσν
--
_module.etymel = function (frame)    
    local args = frame.args
    local output =''
    --πρόσθεσε στις παραμέτρους args το pagename
    --πρόβλημα αν κάποιος θέλει να στείλει τέτοια παράμετρο και να τη χρησιμοποιήσει
    --αλλά "κακό του κεφαλιού του"...
    --args['pagename'] = 'τεστ εδω'
    args['pagename'] = mw.title.getCurrentTitle().text 
    -- διάβασε όλες τις παραμέτρους που στέλνει το λήμμα στο πρότυπο 
    -- είτε τις στέλνει εδώ το πρότυπο είτε όχι
    local pargs = frame:getParent().args
    --ποια ενέργεια να κάνει, δηλαδή ποιο πρότυπο είναι
    --αρχ ή μσν ή λενδ ή μτγν ή ...
    --η μόνη παράμετρος που χρειάζεται να στέλνει το πρότυπο
    --και η μόνη, από αυτές που στελνει το πρότυπο, που χρησιμοποιείται
    local argaction = args[1]
--αν η πρώτη παράμετρος είναι λενδ
    if argaction == 'λενδ' then 
        output = 'λόγιο ενδογενές δάνειο:'
    --μπορούν να μπουν κι' άλλες παράμετροι όπως η γλώσσα του ετύμου, το ίδιο το έτυμο κλπ.
        
--αν η πρώτη παράμετρος είναι αρχ
    elseif argaction == 'αρχ' then
        output = arxaio(args, pargs, 'grc')
--αν η πρώτη παράμετρος είναι μσν
    elseif argaction == 'μσν' then
        output = arxaio(args, pargs, 'gkm')
--αν δημιουργηθούν και άλλες περίοδοι μπορεί να επεκταθεί εδώ
    else
        output = errorhere('δεν δόθηκε η πρώτη παράμετρος') --.. args[1] .. '#' .. pargs[1] .. '#' .. firstarg
    end
    return output
end

--εσωτερική συνάρτηση, που δεν την βλέπουν οι "απέξω"
arxaio = function ( args, pargs, periodos)
    --κάνει αντικατάσταση εδώ;(periodos)
    mw.log(periodos) 
    output = '\'\'' .. languages[periodos].frm .. '\'\''
    --αν η σελίδα έχει στείλει κάποια παράμετρο
    --στο πρότυπο
    if pargs[1] ~= nil then
        if pargs[1] == "" then
            --αν είναι κενή
            --παραπομπή στην ίδια σελίδα
            output = output .. ' [[' .. args['pagename'] .. '#' .. languages[periodos].link .. '|' .. args['pagename'] .. ']]'
        else
            --αν δεν είναι κενή
            --παραπομπή στη σελίδα της λέξης
            output = output .. ' [[' .. pargs[1] .. '#' .. languages[periodos].link .. '|' .. pargs[1] .. ']]'        
        end
    else
        --δεν έχει στείλει παράμετρο
        --μην κάνεις τίποτε
    end
    return output
end

--για χρήση στο:
--Πρότυπο:ετυμ
--που θα περιέχει μόνο το:
--{{#invoke:etym|etymother}}

_module.etymother = function (frame)
    local args = frame.args
    local pargs = frame:getParent().args
    local output
    local fromlang = pargs[1] or ''
    local lemmalang = pargs[2] or ''
    local fromword = pargs[3] or ''
    if lemmalang == 'el' then
        --είναι ελληνική λέξη άρα θέλει "δάνειο"
        return errorhere('η παράμετρος δεν υποστηρίζεται ακόμη')
    end
    if fromlang == '' then
        return errorhere('Σφάλμα! Δεν δόθηκε η πρώτη παράμετρος')
    end
    if lemmalang == '' then
        return errorhere( 'Σφάλμα! Δεν δόθηκε η δεύτερη παράμετρος' )
    end
    output = "''[[w:" .. languages[fromlang].wiki .. "|" .. languages[fromlang].frm .. "]]'', "
    if fromword ~= nil and fromword ~= '' then
        output = output .. "[[" .. fromword .. "#" .. languages[fromlang].link .. "|" .. fromword .. "]]"
    end
    output = output .. "[[Κατηγορία:" .. languages[lemmalang].words .. " " ..  languages[fromlang].from .. "]]"    
    return frame:preprocess(output)             
end

_module.periex = function(frame)
    local parentargs = frame:getParent().args
    PAGENAME = mw.title.getCurrentTitle().text  
    NAMESPACE = mw.title.getCurrentTitle().nsText
    allogramma = parentargs[2] or ''
    if allogramma == '' then allogramma = parentargs[1] end
	local output = '[{{SERVER}}{{localurl:' .. NAMESPACE .. ':' .. PAGENAME .. '|from=' .. parentargs[1] .. '}} ' .. allogramma .. ']'
	return frame:preprocess(output)
end

_module.periex2 = function(frame)
    local parentargs = frame:getParent().args
    --PAGENAME = mw.title.getCurrentTitle().text  
    --NAMESPACE = mw.title.getCurrentTitle().nsText
    allogramma = parentargs[2] or ''
    if allogramma == '' then allogramma = parentargs[1] end
    local lquery =  'from=' .. parentargs[1] 
	local output = '['.. mw.title.getCurrentTitle():fullUrl( lquery) .. ' ' .. allogramma .. ']'
	return frame:preprocess(output)
end

--δοκιμές στην κονσόλα:
--από το http://wikimedia.7.x6.nabble.com/Help-with-Scribunto-Lua-modules-td5006578.html
--γράφουμε μία μία τις γραμμές (χωρίς φυσικά τις 2 πρώτες παύλες...) και πατάμε enter κάθε φορά
--(δοκιμή για {{#invoke:User:Xoristzatziki/etym|etymel|αρχ}} στο πρότυπο αρχ)
--parentFrame = mw.getCurrentFrame():newChild{ args = { '' } }
--frame = parentFrame:newChild{ args = { 'αρχ' } }
--=p.etymel(frame)

--(δοκιμή για {{#invoke:User:Xoristzatziki/etym|etymel|αρχ}} στο πρότυπο αρχ
-- και παράμετρο 'κάτι' στο λήμμα, δηλαδή στο λήμμα να έχει {{αρχ|κάτι}})
--parentFrame = mw.getCurrentFrame():newChild{ args = { 'κάτι' } }
--frame = parentFrame:newChild{ args = { 'αρχ' } }
--=p.etymel(frame)

--(δοκιμή για {{#invoke:User:Xoristzatziki/etym|etymel|λενδ}} στο πρότυπο λενδ)
--parentFrame = mw.getCurrentFrame():newChild{ args = { '' } }
--frame = parentFrame:newChild{ args = { 'λενδ' } }
--=p.etymel(frame)

return _module