export = {}
--Δεν περιέχουν frame άρα δεν μπορούν να κληθούν από Πρότυπα ή σελίδες.
local Lf = {} --τοπικές συναρτήσεις
local Ld = {} --τοπικές μεταβλητές, μπορούν να έχουν τα ίδια ονόματα με τις συναρτήσεις
--lc = {} για τοπικό πίνακα δεδομένων μέσα στις συναρτήσεις
Ld['δεδομένα'] =mw.loadData("Module:Ημερολόγια/Δεδομένα")
Ld['ημέρες'] = Ld['δεδομένα']['ημέρες']
Ld['μήνες'] = Ld['δεδομένα']['μήνες']
--local framehere = mw.getCurrentFrame()
export.testtable = function(monthnum)
local b = export['πίνακας μήνα'] (monthnum)
--return framehere:preprocess(b)
return b
end
--επιστρέφει το ποια ημέρα της εβδομάδας είναι
--χρειάζεται ημέρα του μήνα, αριθμό του μήνα και έτος
--αρχίζει από Κυριακή
export['ημέρα της εβδομάδας'] = function(daynum, monthnum, yearnum)
local dd = daynum
local mm = monthnum
local yy = yearnum
local mmx = mm
if (mm == 1) then mmx = 13; yy = yy-1 end
if (mm == 2) then mmx = 14; yy = yy-1 end
local val8 = dd + (mmx*2) + math.floor(((mmx+1)*3)/5) + yy + math.floor(yy/4) - math.floor(yy/100) + math.floor(yy/400) + 2
local val9 = math.floor(val8/7)
local dw = val8-(val9*7)
if (dw < 2 ) then
dw = dw + 6
else
dw = dw - 1
end
return dw
end
--επιστρέφει ένα σωστό αριθμό από το 1 μέχρι το 12
--για την περίπτωση που έχουμε ξεπεράσει (κυκλικά)
--το πάνω ή το κάτω όριο
--(μία φορά μόνο, δηλαδή από 13-23 ή από -11 μέχρι 0)
export['κανονικός αριθμός μήνα'] = function(monthnum)
if monthnum > 12 then return monthnum - 12 end
if monthnum < 1 then return monthnum + 12 end
return monthnum
end
--κονσόλα
-- δείγμα δίσεκτου (2000)
-- =p['είναι δίσεκτο'](2000)
--δείγμα κανονικού (2100)
-- =p['είναι δίσεκτο'](2100)
export['είναι δίσεκτο'] = function(yearnum)
local yearnum = tonumber(yearnum)
return (yearnum % 4 == 0 and (yearnum % 100 ~= 0 or yearnum % 400 == 0))
end
--επιστρέφει τον αριθμό των ημερών από την πρώτη πρώτου για δίσεκτα έτη
--για να βρείτε τον αριθμό έτους 365 ημερών κάντε τις ανάλογες πράξεις
--(αν είναι <60 δεν κάνουμε τίποτε, αλλιώς αφαιρούμε 1)
export['ημέρα έτους 366'] = function( daynum, monthnum)
local b0 = os.time{year=1996,month=1,day=0 }
local b1 = os.time{year=1996,month=tonumber(monthnum),day=tonumber(daynum)}
local b2 = os.difftime(b1, b0) / (24 * 60 * 60)
return math.floor(b2)
end
--επιστρέφει πίνακα time με την ημερομηνία για το δίσεκτο 1966
export['ημερομηνία έτους 366'] = function(daynum)
return os.date('*t', os.time{year=1996,month=1,day=daynum })
end
--επιστρέφει ή για τα 20, 30, 40 κλπ.
export['η'] = function(daymonthnum)
local h = "η"
local intpart, fracpart = math.modf(tonumber(daymonthnum) / 10)
if tonumber(fracpart) == 0 and tonumber(intpart) > 1 then h = "ή" end
--mw.log("mw.log Lf['η'] ===#" .. intpart .. "#" .. fracpart .. "#" .. h)
return h
end
--επιστρέφει α για 2 και 22, αλλιώς ότι και export['η']
export['α'] = function(daymonthnum)
local n = tonumber(daymonthnum)
if n == 2 or n == 22 then return "α" end
return export['η'](n)
end
--*******************************************************************************************************
--επιστρέφει τους μήνες στη σειρά όπως εμφανίζονται στο λήμμα κάθε μήνα
--δεν χρειάζεται bold γιατί η παραπομπή στο ίδιο λήμμα το κάνει bold
export['μήνες στη σειρά'] = function()
local lc = {}
lc['γραμμή'] = '<center>'
for xcounter = 1,11 do
lc['γραμμή'] = lc['γραμμή'] .. '[[' .. Ld['μήνες'][xcounter]['όνομα'] .. ']] | '
end
lc['γραμμή'] = lc['γραμμή'] .. '[[' .. Ld['μήνες'][12]['όνομα'] .. ']]' .. '</center>'
return lc['γραμμή']
end
--επιστρέφει τους 5 μήνες στη σειρά όπως εμφανίζονται στο λήμμα κάθε ημερομηνίας
export['μήνες στη σειρά 5'] = function (monthnum)
local lc = {}
lc['γραμμή'] = '<center>'
lc['μήνας'] = tonumber(monthnum)
lc['παραπομπή'] = {}
for xcounter = -2,2 do
lc['παραπομπή'][xcounter + 3] = '[[' .. Ld['μήνες'][export['κανονικός αριθμός μήνα'](lc['μήνας'] + xcounter)]['όνομα'] .. ']]'
end
lc['παραπομπή'][3] = "'''" .. lc['παραπομπή'][3] .. "'''"
lc['γραμμή'] = lc['γραμμή'] .. table.concat( lc['παραπομπή'], " | ") .. '</center>'
return lc['γραμμή']
end
--επιστρέφει τις ημέρες στη σειρά όπως εμφανίζονται στο λήμμα κάθε μήνα
export['ημέρες στη σειρά'] = function(monthnum)
local lc = {}
lc['γραμμή'] = '<center>'
lc['μήνας'] = tonumber(monthnum)
lc['γενική μήνα'] = Ld['μήνες'][lc['μήνας']]['γεν']
lc['ημέρες μήνα'] = Ld['μήνες'][lc['μήνας']]['ημ']
for xcounter = 1, lc['ημέρες μήνα']-1 do
lc['γραμμή'] = lc['γραμμή'] .. '[[' .. xcounter .. ' ' .. lc['γενική μήνα'] .. '|' .. xcounter .. ']] | '
end
lc['τέλος'] = '[[' .. lc['ημέρες μήνα'] .. ' ' .. lc['γενική μήνα'] .. '|' .. lc['ημέρες μήνα'] .. ']]'
if lc['μήνας'] == 2 then lc['τέλος'] = "''" .. lc['τέλος'] .. "''" end
lc['γραμμή'] = lc['γραμμή'] .. lc['τέλος'] .. '</center>'
return lc['γραμμή']
end
--επιστρέφει τον πίνακα για το τρέχον έτος
--για συγκεκριμένο μήνα
export['πίνακας μήνα'] = function(monthnum)
local lc = {}
lc['ημέρες'] = {}--local currentdays = {}
lc['αριθμός'] = 0 --local tmpnum = 0
lc['αριθμός μήνα'] = tonumber(monthnum) --local monthnum = tonumber(monthnum)
lc['όνομα μήνα'] = Ld['μήνες'][lc['αριθμός μήνα']]['όνομα'] --local monthname = Ld['μήνες'][monthnum]['όνομα']
lc['μήνας στη γενική'] = Ld['μήνες'][lc['αριθμός μήνα']]['γεν'] --local monthg = Ld['μήνες'][monthnum]['γεν']
lc['έτος'] = os.date('*t').year --local etos = os.date('*t').year
lc['πρώτη ημέρα'] = export['ημέρα της εβδομάδας'] (1, lc['αριθμός μήνα'], lc['έτος']) --firstday
if lc['πρώτη ημέρα'] == 7 then
lc['πρώτη ημέρα'] = 1
else
lc['πρώτη ημέρα'] = lc['πρώτη ημέρα'] + 1
end
lc['ημέρες μήνα'] = Ld['μήνες'][lc['αριθμός μήνα']]['ημ'] --local monthdays = Ld['μήνες'][monthnum]['ημ']
--φέρνει 29 για το φλεβάρη
if lc['αριθμός μήνα'] == 2 and (not export['είναι δίσεκτο'](lc['έτος'])) then lc['ημέρες μήνα'] = 28 end
for xcounter = 1,7 do
if lc['πρώτη ημέρα'] > xcounter then
lc['ημέρες'][xcounter] = '|colspan="1"| '
else
lc['αριθμός'] = (xcounter - lc['πρώτη ημέρα'] + 1)
lc['ημέρες'][xcounter] = '| [[' .. lc['αριθμός'] .. ' ' .. lc['μήνας στη γενική'] .. '|' .. lc['αριθμός'] ..']]'
end
end
for xcounter = 8,28 do
lc['αριθμός'] = (xcounter - lc['πρώτη ημέρα'] + 1)
lc['ημέρες'][xcounter] = '| [[' .. lc['αριθμός'] .. ' ' .. lc['μήνας στη γενική'] .. '|' .. lc['αριθμός'] ..']]'
end
for xcounter = 29,35 do
if lc['ημέρες μήνα'] + lc['πρώτη ημέρα'] > xcounter then
lc['αριθμός'] = (xcounter - lc['πρώτη ημέρα'] + 1)
lc['ημέρες'][xcounter] = '| [[' .. lc['αριθμός'] .. ' ' .. lc['μήνας στη γενική'] .. '|' .. lc['αριθμός'] ..']]'
else
lc['ημέρες'][xcounter] = '|colspan="1"| '
end
end
lc['πίνακας'] = [=[{| class="toccolours" style="float:right; margin-left: 1em; text-align:center;"
|- style="background:#ccccff;"
|colspan="7"|'''[[]=] .. lc['όνομα μήνα'] .. [=[]]'''
|- style="background:#ccccff;"
|width="14%"| Κυρ.
|width="14%"| Δευτ.
|width="14%"| Τρ.
|width="14%"| Τετ.
|width="14%"| Πεμ.
|width="14%"| Παρ.
|width="14%"| Σαβ.
|-]=]
lc['ημέρες για εμφάνιση'] = 0 --local daytoshow = 0
for ycounter = 1,5 do
for xcounter = 1,7 do
--if ycounter < 2 then
--daytoshow = xcounter
--else
lc['ημέρες για εμφάνιση'] = (((ycounter - 1 ) * 7) + xcounter)
--mw.log(type(lc['ημέρες για εμφάνιση']))
lc['πίνακας'] = lc['πίνακας'] .. '\n' .. lc['ημέρες'][lc['ημέρες για εμφάνιση']] .. '\n'
end
lc['πίνακας'] = lc['πίνακας'] .. '\n' .. '|-'
--αν έχει 28 ημέρες και τις έχεις ήδη δείξει βγες
if (lc['ημέρες μήνα'] + lc['πρώτη ημέρα']) < 29 and (lc['ημέρες για εμφάνιση'] > 27) then break end
end
lc['πίνακας'] = lc['πίνακας'] .. [=[
|colspan="7"|
|- style="background:#ccccff"
|colspan="7"| [[]=] .. lc['έτος'] .. ']]\n' .. [=[
|}]=]
return lc['πίνακας']
end
export['γραμμή ορισμού'] = function(dayofyear)
local lc = {}
lc['ημέρα του έτους'] = dayofyear
lc['προηγούμενη'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']-1)
lc['τρέχουσα'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους'])
lc['επόμενη'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']+1)
lc['υπολείπονται'] = 365 - lc['ημέρα του έτους']
-- η ημέρα του μήνα υπολογίζεται με βάση τα δίσεκτα έτη
--οπότε στις ημέρες μετά την 59η θα πρέπει να χρησιμοποιούμε "προηγούμενους" αριθμούς...
lc['γραμμή ορισμού'] = "<center>H '''" .. lc['τρέχουσα']['day'] .. export['α'](lc['τρέχουσα']['day']) .. ' ' .. Ld['μήνες'][lc['τρέχουσα']['month']]['γεν'] .. "''' είναι η "
--mw.log(Ld['τρίτη γραμμή'])
lc['η'] = export['η'](lc['ημέρα του έτους'])
if lc['ημέρα του έτους'] < 59 then
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. lc['ημέρα του έτους'] .. lc['η'] .. " μέρα του έτους κατά το [[Γρηγοριανό Hμερολόγιο]]. Υπολείπονται "
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. lc['υπολείπονται'] .. ' ημέρες (' .. lc['υπολείπονται'] + 1 .. ' σε δίσεκτα έτη).'
elseif lc['ημέρα του έτους'] == 59 then
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. "59η μέρα του έτους κατά το [[Γρηγοριανό Hμερολόγιο]]. Υπολείπονται 306 ημέρες (307 σε δίσεκτα έτη)."
elseif lc['ημέρα του έτους'] == 60 then
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. "60ή ημέρα του δίσεκτου έτους κατά το [[Γρηγοριανό Hμερολόγιο]]. Υπολείπονται 306 ημέρες. "
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. "Τα έτη που έχουν 29 μέρες στον [[Φεβρουάριος|Φεβρουάριο]] είναι εξ ορισμού [[Δίσεκτο έτος|δίσεκτα]]."
elseif lc['ημέρα του έτους'] == 61 then
lc['έξτρα'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']-2)
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. "60ή ημέρα του έτους κατά το [[Γρηγοριανό Hμερολόγιο]] (61η σε δίσεκτα έτη). Υπολείπονται 305 ημέρες."
else
lc['η2'] = export['η'](lc['ημέρα του έτους']-1)
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. lc['ημέρα του έτους']-1 .. lc['η2'] .. " μέρα του έτους κατά το [[Γρηγοριανό Hμερολόγιο]] ("
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. lc['ημέρα του έτους'] .. lc['η'] .. ' σε δίσεκτα έτη). Υπολείπονται ' .. lc['υπολείπονται'] + 1 .. ' ημέρες.'
end
lc['γραμμή ορισμού'] = lc['γραμμή ορισμού'] .. '</center>'
return lc['γραμμή ορισμού']
end
--επιστρέφει τις ημέρες στη σειρά όπως εμφανίζονται στο λήμμα κάθε ημερομηνίας
--(3 ή 4 ανάλογα)
export['ημέρες στη σειρά 34'] = function(dayofyear)
local lc = {}
lc['ημέρα του έτους'] = dayofyear
lc['γραμμή'] = '<center>'
lc['προηγούμενη'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']-1)
lc['τρέχουσα'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους'])
lc['επόμενη'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']+1)
lc['παραπομπές'] = {}
lc['παραπομπές'][1] = "[[" .. lc['προηγούμενη']['day'] .. ' ' .. Ld['μήνες'][lc['προηγούμενη']['month']]['γεν'] .. "]]"
lc['παραπομπές'][2] = "'''[[" .. lc['τρέχουσα']['day'] .. ' ' .. Ld['μήνες'][lc['τρέχουσα']['month']]['γεν'] .. "]]'''"
lc['παραπομπές'][3] = "[[" .. lc['επόμενη']['day'] .. ' ' .. Ld['μήνες'][lc['επόμενη']['month']]['γεν'] .. "]]"
if lc['ημέρα του έτους'] == 61 then
lc['εξτρά'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']-2)
table.insert( lc['παραπομπές'], 1, "[[" .. lc['εξτρά']['day'] .. ' ' .. Ld['μήνες'][lc['εξτρά']['month']]['γεν'] .. "]]" )
lc['παραπομπές'][2] = "''" .. lc['παραπομπές'][2] .. "''"
elseif lc['ημέρα του έτους'] == 59 then
lc['εξτρά'] = export['ημερομηνία έτους 366'](lc['ημέρα του έτους']+2)
table.insert( lc['παραπομπές'], "[[" .. lc['εξτρά']['day'] .. ' ' .. Ld['μήνες'][lc['εξτρά']['month']]['γεν'] .. "]]" )
lc['παραπομπές'][3] = "''" .. lc['παραπομπές'][3] .. "''"
end
lc['γραμμή'] = lc['γραμμή'] .. table.concat( lc['παραπομπές'], " | ") .. '</center>'
return lc['γραμμή']
end
return export