Module:DateFunctions
Εμφάνιση
Documentation for this module may be created at Module:DateFunctions/τεκμηρίωση
-- Διάφορες ημερολογιακές συναρτήσεις
p = {}
--επιστρέφει το κείμενο σε div με σφάλμα
--και εντάσσει τη σελίδα σε κατηγορία με σφάλματα
errorhere = function(errstring)
return '<div class="error">' .. errstring .. '</div>[[Κατηγορίαν:Σελίδες με σφάλματα στο ημερολόγιο]]'
end
--επιστρέφει true αν είναι αλφαριθμητικό και έχει έστω και έναν χαρακτήρα
exeikati = function(onearg)
if onearg == nil then
return false
end
if type(onearg) == 'string' then
return (mw.ustring.len(onearg) > 0)
else
return false
end
end
-- RiciLake comments:
-- It would be better to create the days_in_month table outside the
-- function, like this (using % so it only works in Lua 5.1)
--επιστρέφει το αν είναι δίσεκτο έτος
p.isleapyear = function(poioetos)
return poioetos % 4 == 0 and (poioetos % 100 ~= 0 or poioetos % 400 == 0)
end
--επιστρέφει τις ημέρες που έχει ο μήνας
----(μήνας και έτος ακέραιοι αριθμοί)
p.getdaysinmonth = function(poiosmhnas, poioetos)
if poiosmhnas == 2 and p.isleapyear(poioetos) then
return 29
else
return p['μήνες'][poiosmhnas]['ημ']
end
end
--επιστρέφει το μήνα (ο μήνας σε ακέραιο) στην ονομαστική πτώση
p.getmonthname = function(poiosmhnas)
return p['μήνες'][poiosmhnas]['όνομα']
end
--επιστρέφει το μήνα (ο μήνας σε ακέραιο) στη γενική πτώση
p.getmonthgen = function(poiosmhnas)
return p['μήνες'][poiosmhnas]['γεν']
end
--πίνακας με τα στοιχεία των μηνών
p['μήνες'] = { {['όνομα'] = 'Καλαντάρτς', ['γεν'] = 'Καλανταρί', ['συντμ'] = {'ΚΑΛ','ΚΑΛ.',}, ['ημ'] = 31},
{['όνομα'] = 'Κούντουρος', ['γεν'] = 'Κούντουρονος',['συντμ'] = {'ΚΟΥ','ΚΟΥ.',}, ['ημ'] = 29},
{['όνομα'] = 'Μαρτς', ['γεν'] = 'Μαρτί',['συντμ'] = {'ΜΑΡ','ΜΑΡ.',}, ['ημ'] = 31},
{['όνομα'] = 'Απρίλτς', ['γεν'] = 'Απρίλτ',['συντμ'] = {'ΑΠΡ','ΑΠΡ.',}, ['ημ'] = 30},
{['όνομα'] = 'Καλομηνάς', ['γεν'] = 'Καλομηνά',['συντμ'] = {'ΚΑΛ','ΚΑΛ.','ΚΑΛΑ','ΚΑΛΑ.',}, ['ημ'] = 31},
{['όνομα'] = 'Κερασινός', ['γεν'] = 'Κερασινού',['συντμ'] = {'ΚΕΡ','ΚΕΡ.','ΚΕΡΑ','ΚΕΡΑ.',}, ['ημ'] = 30},
{['όνομα'] = 'Χορτοθέρτς', ['γεν'] = 'Χορτοθέρτ',['συντμ'] = {'ΧΟΡ','ΧΟΡ.','ΧΟΡΤ','ΧΟΡΤ.',}, ['ημ'] = 31},
{['όνομα'] = 'Αλωνάρτς', ['γεν'] = 'Αλωναρί',['συντμ'] = {'ΑΛΩ','ΑΛΩ.',}, ['ημ'] = 31},
{['όνομα'] = 'Σταυρίτες', ['γεν'] = 'Σταυρί',['συντμ'] = {'ΣΤΑ','ΣΤΑ.',}, ['ημ'] = 30},
{['όνομα'] = 'Τρυγομηνάς', ['γεν'] = 'Τρυγομηνά',['συντμ'] = {'ΤΡΥ','ΤΡΥ.',}, ['ημ'] = 31},
{['όνομα'] = 'Αεργίτες', ['γεν'] = 'Αεργί',['συντμ'] = {'ΑΕΡ','ΑΕΡ.',}, ['ημ'] = 30},
{['όνομα'] = 'Χριστουγεννάρτς', ['γεν'] = 'Χριστουγενναρί',['συντμ'] = {'ΧΡΙ','ΧΡΙ.',}, ['ημ'] = 31},
}
--επιστρέφει τον αριθμό του μήνα από το όνομα ή τη σύντμηση
--από τον πίνακα
p['μήναςαποόνομα'] = function(month)
if type(month) ~= "string" then
return nil
end
local m = mw.ustring.upper( mw.text.trim(month) )
for i = 1, 12 do
if p['μήνες'][i]['όνομα'] == month then return i end
if p['μήνες'][i]['γεν'] == month then return i end
local j = 1
--για όσο υπάρχει σύντμηση για τον μήνα
while p['μήνες'][i]['συντμ'][j] ~= nil do
if p['μήνες'][i]['συντμ'][j] == m then
return i
end
j = j + 1
end
end
-- αφού δεν βρέθηκε ως εδώ επιστρέφει αυτόματα το nil
end
--πίνακας με τα ονόματα των ημερών
p['ημέρες'] = { 'Δευτέραν', 'Τρίτ', 'Τετράδ', 'Πέφτ', 'Παρασκευήν', 'Σάββαν', 'Κερεκήν'}
--επιστρέφει το ποια μέρα της εβδομάδας είναι (ακέραιος, Δευτέραν=1) αν δοθεί η ημερομηνία
-- returns the day of week (integer)
-- Compatible with Lua 5.0 and 5.1.
-- from sam_lie
p.get_day_of_week = function(dd, mm, yy)
-- local days = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }
-- local days = { 7, 1, 2, 3, 4, 5, 6 }
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, days[dw]
-- return days[dw]
return dw
end
--επιστρέφει ένα σωστό αριθμό από το 1 μέχρι το 12
--για την περίπτωση που έχουμε ξεπεράσει (κυκλικά)
--το πάνω ή το κάτω όριο
--(μία φορά μόνο, δηλαδή από 13-23 ή από -11 μέχρι 0)
p.realmonthnum = function(monthnum)
if monthnum > 12 then return monthnum - 12 end
if monthnum < 1 then return monthnum + 12 end
return monthnum
end
return p