Module:DafYomi
Appearance
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
Usage
[edit]
{{#invoke:DafYomi|today}}
{{#invoke:DafYomi|date|month=7|day=31|year=2020}}
{{#invoke:DafYomi|today|format=''daf'' %d of Tractate ''%m''}}
{{#invoke:DafYomi|date|month=7|day=31|year=2020|format=''[[%m (Talmud)|%m]]'', page %d}}
local p = {}
function p.today (frame)
return fromDate(os.date("!*t"), frame.args.format)
end
function p.date (frame)
return fromDate(frame.args, frame.args.format)
end
function fromDate (dat, format)
local res = mas_daf(dat)
-- add 1 to daf (no daf aleph)
if (format) then
return (string.gsub((string.gsub(format, "%%m", res.mas)), "%%d", res.daf + 1))
else
return "''" .. res.mas .. "'' " .. (res.daf + 1)
end
end
function mas_daf (dat)
dat.hour = 0
dat.min = 0
dat.sec = 0
dat = os.time(dat)
local date0 = os.time({year=2005,month=2,day=28,hour=0,min=0,sec=0}) -- date before start of cycle
local sinceS = dat - date0 + 200 -- for the unlikely event of anti-leap seconds
local sinceD = math.floor(sinceS / 86400)
local days = sinceD % 2711
if (days == 0) then return {mas='Niddah', daf='72'} end
-- each number is the number of dapim, which is 1 less than the last daf's number
if (days <= 63) then return {mas='Berakhot',daf=days} end
days = days - 63
if (days <= 156) then return {mas='Shabbat',daf=days} end
days = days - 156
if (days <= 104) then return {mas='Eruvin',daf=days} end
days = days - 104
if (days <= 120) then return {mas='Pesachim',daf=days} end
days = days - 120
if (days <= 21) then return {mas='Shekalim',daf=days} end
days = days - 21
if (days <= 87) then return {mas='Yoma',daf=days} end
days = days - 87
if (days <= 55) then return {mas='Sukkah',daf=days} end
days = days - 55
if (days <= 39) then return {mas='Beitza',daf=days} end
days = days - 39
if (days <= 34) then return {mas='Rosh Hashanah',daf=days} end
days = days - 34
if (days <= 30) then return {mas="Ta'anit",daf=days} end
days = days - 30
if (days <= 31) then return {mas='Megillah',daf=days} end
days = days - 31
if (days <= 28) then return {mas="Mo'ed Katan",daf=days} end
days = days - 28
if (days <= 27) then return {mas='Chagigah',daf=days} end
days = days - 27
if (days <= 121) then return {mas='Yevamot',daf=days} end
days = days - 121
if (days <= 111) then return {mas='Ketubot',daf=days} end
days = days - 111
if (days <= 90) then return {mas='Nedarim',daf=days} end
days = days - 90
if (days <= 65) then return {mas='Nazir',daf=days} end
days = days - 65
if (days <= 48) then return {mas='Sotah',daf=days} end
days = days - 48
if (days <= 89) then return {mas='Gittin',daf=days} end
days = days - 89
if (days <= 81) then return {mas='Kiddushin',daf=days} end
days = days - 81
if (days <= 118) then return {mas='Bava Kamma',daf=days} end
days = days - 118
if (days <= 118) then return {mas='Bava Metzia',daf=days} end
days = days - 118
if (days <= 175) then return {mas='Bava Batra',daf=days} end
days = days - 175
if (days <= 112) then return {mas='Sanhedrin',daf=days} end
days = days - 112
if (days <= 23) then return {mas='Makkot',daf=days} end
days = days - 23
if (days <= 48) then return {mas='Shevuot',daf=days} end
days = days - 48
if (days <= 75) then return {mas='Avodah Zarah',daf=days} end
days = days - 75
if (days <= 13) then return {mas='Horayot',daf=days} end
days = days - 13
if (days <= 119) then return {mas='Zevachim',daf=days} end
days = days - 119
if (days <= 109) then return {mas='Menachot',daf=days} end
days = days - 109
if (days <= 141) then return {mas='Chullin',daf=days} end
days = days - 141
if (days <= 60) then return {mas='Bekhorot',daf=days} end
days = days - 60
if (days <= 33) then return {mas='Arakhin',daf=days} end
days = days - 33
if (days <= 33) then return {mas='Temurah',daf=days} end
days = days - 33
if (days <= 27) then return {mas='Keritot',daf=days} end
days = days - 27
if (days <= 21) then return {mas="Me'ilah",daf=days} end -- these 4 tractates are numbered consecutively
if (days <= 24) then return {mas='Kinnim',daf=days} end
if (days <= 32) then return {mas='Tamid',daf=days} end
if (days <= 36) then return {mas='Middot',daf=days} end
days = days - 36
return {mas='Niddah',daf=days}
end
return p