Documentation for this module may be created at Module:πίνακαςΛτΗ/τεκμηρίωση

-- επιστρέφει τον πίνακα για τη ΛτΗ στη σελίδα [[Βικιλεξικό:Λέξη_της_Ημέρας]]
-- με βάση την τρέχουσα ημερομηνία του server
p ={}
 
local datefunctions = require "Module:DateFunctions"
--το πρώτο κελί που θα έχει λέξη της ημέρας
local firstdaycell = 0
--το τελευταίο κελί που θα έχει λέξη της ημέρας
local lastdaycell = 0
--δημιουργία ανεξάρτητου frame (expensive?)
--ώστε και να μη χρειάζεται στη συνάρτηση λέξη
--και να μπορεί να τρέξει και στην κονσόλα δοκιμών 
--someframe = mw.getCurrentFrame()
 
--
--βρες τη λέξη της ημέρας χρησιμοποιώντας τη μέθοδο expandTemplate
--με ευθυνή αυτού που καλεί τη συνάρτηση για το αν υπάρχει η ημέρα
function poialeksi (hmera)
    local leksinum = 'ΛτΗ' .. hmera
    local leksi = mw.getCurrentFrame():expandTemplate{ title = leksinum, args = { } }
    return leksi
end 

--δημιούργησε τη γραμμή του κελιού που έχει περιεχόμενο
function createcellline(keli)
    --για ποια μέρα του μήνα πρόκειται
    local d = keli - firstdaycell + 1
    --βρες τη λέξη της ημέρας αυτής
    local leksi = poialeksi (tostring(d)) --or ''
    --στην αρχή ο αριθμός της ημέρας του μήνα
    local row = '<b>' .. d .. '</b><br />'
    --μετά ξεκίνα την παραπομπή για τη λέξη
    row = row .. '<b>[[' .. leksi .. ']]</b><br />'
    --βάλε την παραπομπή στην αλλαγή της λέξης
    row = row .. '<small>[http://el.wiktionary.org/w/index.php?title=Πρότυπο:ΛτΗ' .. d .. '&action=edit αλλαγή]'
    --βάλε την παραπομπή στο ιστορικό της
    row = row .. ' - [http://el.wiktionary.org/w/index.php?title=Πρότυπο:ΛτΗ' .. d .. '&action=history ιστορικό ]</small>'
    return row
end

--επέστρεψε το περιεχόμενο για το κελί.
--δες αν πρέπει να έχει περιεχόμενο το κελί
--και επέστρεψέ το
function cellcontent(keli) 
    --αν το κελί είναι μικρότερο από το κελί που πρέπει να έχει την πρώτη ημέρα
    --ή μεγαλύτερο από το κελί που πρέπει να έχει την τελευτάια ημέρα
    --επέστρεψε κενό
    if keli < firstdaycell or keli > lastdaycell then
        return ''
    else
        --αλλιώς φτιάξε το περιεχόμενο του κελιού
        return createcellline(keli)
    end
end
 
function p.daystable(frame)
    --πόσες μέρες έχει ο μήνας
    local monthdays = datefunctions.getMonthDays(frame)
    --το πρώτο κελί που θα έχει "λέξη της ημέρας"
    firstdaycell = datefunctions.getfirstDayNum(frame)
    --το τελευταίο κελί που θα έχει "λέξη της ημέρας"
    lastdaycell = monthdays + firstdaycell -1
    local cellstart = '\n<td style="width:100px" align="center"> '
    local cellend = '\n</td>'
    --έναρξη κεντραρίσματος,πίνακα και πρώτη γραμμή με τις ημέρες
    t = [=[<center>
<table style="float:center; border:5px solid #008B8B; background:#FFFACD;" rules="all" class="plainlinks">
<tr>
<th bgcolor="#008B8B" colspan="1">Δευτέρα</th>
<th bgcolor="#008B8B" colspan="1">Τρίτη</th>
<th bgcolor="#008B8B" colspan="1">Τετάρτη</th>
<th bgcolor="#008B8B" colspan="1">Πέμπτη</th>
<th bgcolor="#008B8B" colspan="1">Παρασκευή</th>
<th bgcolor="#008B8B" colspan="1">Σάββατο</th>
<th bgcolor="#008B8B" colspan="1">Κυριακή</th>
</tr>
<tr>
]=] 
    --για κάθε κελί από το ένα ως το εφτά
    for kcounter = 1,7 do
        --φτιάξε τον κώδικα html για το κελί
        t = t .. cellstart .. cellcontent(kcounter) .. cellend
    end
    --τέλος γραμμής πίνακα
    t = t .. '\n</tr>'
    --για κάθε εβδομάδα από τη δεύτερη μέχρι την τέταρτη
    for wcounter = 1, 5 do
        --ξεκίνα νέα γραμμή πίνακα
        t = t .. '\n<tr>'
        --για κάθε κελί της γραμμής (wcounter+1) του πίνακα από το ένα ως το εφτά
        for kcounter = ((7*wcounter)+1),((7*wcounter)+7) do
            t = t .. cellstart .. cellcontent(kcounter) .. cellend
        end
        --τέλος γραμμής πίνακα
        t = t .. '\n</tr>'
        --αν το τελευταίο κελί με λέξη της ημέρας το έχουμε ήδη δείξει
        --σταμάτα
        if lastdaycell <= ((7*wcounter)+7) then
            break
        end
    end
 
 	--τέλος πίνακα και κεντραρίσματος
    t = t .. '\n</table></center>'
    --έτοιμο html
    return frame:preprocess(t)  
end
 
return p