Module:DafYomi explained

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) endend

function mas_daf (dat) dat.hour = 0 dat.min = 0 dat.sec = 0 dat = os.time(dat) local date0 = os.time -- 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 end -- each number is the number of dapim, which is 1 less than the last daf's number if (days <= 63) then return end days = days - 63 if (days <= 156) then return end days = days - 156 if (days <= 104) then return end days = days - 104 if (days <= 120) then return end days = days - 120 if (days <= 21) then return end days = days - 21 if (days <= 87) then return end days = days - 87 if (days <= 55) then return end days = days - 55 if (days <= 39) then return end days = days - 39 if (days <= 34) then return end days = days - 34 if (days <= 30) then return end days = days - 30 if (days <= 31) then return end days = days - 31 if (days <= 28) then return end days = days - 28 if (days <= 27) then return end days = days - 27 if (days <= 121) then return end days = days - 121 if (days <= 111) then return end days = days - 111 if (days <= 90) then return end days = days - 90 if (days <= 65) then return end days = days - 65 if (days <= 48) then return end days = days - 48 if (days <= 89) then return end days = days - 89 if (days <= 81) then return end days = days - 81 if (days <= 118) then return end days = days - 118 if (days <= 118) then return end days = days - 118 if (days <= 175) then return end days = days - 175 if (days <= 112) then return end days = days - 112 if (days <= 23) then return end days = days - 23 if (days <= 48) then return end days = days - 48 if (days <= 75) then return end days = days - 75 if (days <= 13) then return end days = days - 13 if (days <= 119) then return end days = days - 119 if (days <= 109) then return end days = days - 109 if (days <= 141) then return end days = days - 141 if (days <= 60) then return end days = days - 60 if (days <= 33) then return end days = days - 33 if (days <= 33) then return end days = days - 33 if (days <= 27) then return end days = days - 27 if (days <= 21) then return end -- these 4 tractates are numbered consecutively if (days <= 24) then return end if (days <= 32) then return end if (days <= 36) then return end days = days - 36 return end

return p