Class: Date
- Inherits:
-
Object
- Object
- Date
- Defined in:
- lib/feast_fast/date.rb
Class Method Summary collapse
Instance Method Summary collapse
- #easter? ⇒ Boolean
- #fast ⇒ Object
- #fast? ⇒ Boolean
- #feasts ⇒ Object
- #feasts? ⇒ Boolean
- #next_date(n = 1) ⇒ Object
- #next_easter ⇒ Object
- #next_sunday(step = 1) ⇒ Object
- #next_with_feast(*statuses) ⇒ Object
- #prev_date(n = 1) ⇒ Object
- #prev_sunday(step = 1) ⇒ Object
- #prev_with_feast(*statuses) ⇒ Object
- #week_ago ⇒ Object
- #week_since ⇒ Object
- #weeks_ago(step = 1) ⇒ Object
- #weeks_since(step = 1) ⇒ Object
Class Method Details
.easter(year = self.today.year) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/feast_fast/date.rb', line 3 def self.easter(year=self.today.year) # FeastFast::DB.data(year.to_i)[:easter] raise TypeError, 'expected fixnum' unless year.instance_of? Fixnum a = (19 * (year % 19) + 15) % 30 b = (2 * (year % 4) + 4 * (year % 7) + 6 * a + 6) % 7 c = a + b if c > 10 d = c - 9 # day m = 4 # month else d = 22 + c # day m = 3 # month end self.new(year, m, d) + 13 end |
Instance Method Details
#easter? ⇒ Boolean
30 31 32 |
# File 'lib/feast_fast/date.rb', line 30 def easter? self == FeastFast::DB.data(self.year)[:easter] end |
#fast ⇒ Object
26 27 28 |
# File 'lib/feast_fast/date.rb', line 26 def fast @fast ||= FeastFast::DB.date(self)[:fast] end |
#fast? ⇒ Boolean
34 35 36 |
# File 'lib/feast_fast/date.rb', line 34 def fast? self.fast.status != FeastFast::Fast::STATUS::NO end |
#feasts ⇒ Object
23 24 25 |
# File 'lib/feast_fast/date.rb', line 23 def feasts @feasts ||= FeastFast::DB.date(self)[:feasts] end |
#feasts? ⇒ Boolean
38 |
# File 'lib/feast_fast/date.rb', line 38 def feasts?() self.feasts.any? end |
#next_date(n = 1) ⇒ Object
49 |
# File 'lib/feast_fast/date.rb', line 49 def next_date(n=1) self + n end |
#next_easter ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/feast_fast/date.rb', line 73 def next_easter easter = self.class.easter(self.year) if easter > self easter else self.class.easter(self.year + 1) end end |
#next_sunday(step = 1) ⇒ Object
52 53 54 55 56 |
# File 'lib/feast_fast/date.rb', line 52 def next_sunday(step=1) days_to_sunday = self.wday!=0 ? 7-self.wday : 0 days_to_sunday = days_to_sunday + 7*(step-1) result = self + days_to_sunday end |
#next_with_feast(*statuses) ⇒ Object
40 41 42 |
# File 'lib/feast_fast/date.rb', line 40 def next_with_feast(*statuses) self.class.with_feasts(self.year, *statuses).find{|d| d > self } || self.class.with_feasts(self.year + 1, *statuses).first end |
#prev_date(n = 1) ⇒ Object
50 |
# File 'lib/feast_fast/date.rb', line 50 def prev_date(n=1) self - n end |
#prev_sunday(step = 1) ⇒ Object
58 59 60 61 62 |
# File 'lib/feast_fast/date.rb', line 58 def prev_sunday(step=1) days_to_sunday = self.wday!=0 ? self.wday : 0 days_to_sunday = days_to_sunday + 7*(step-1) result = self - days_to_sunday end |
#prev_with_feast(*statuses) ⇒ Object
44 45 46 |
# File 'lib/feast_fast/date.rb', line 44 def prev_with_feast(*statuses) self.class.with_feasts(self.year, *statuses).reverse.find{|d| d < self } || self.class.with_feasts(self.year - 1, *statuses).last end |
#week_ago ⇒ Object
70 |
# File 'lib/feast_fast/date.rb', line 70 def week_ago() weeks_ago end |
#week_since ⇒ Object
71 |
# File 'lib/feast_fast/date.rb', line 71 def week_since() weeks_since end |
#weeks_ago(step = 1) ⇒ Object
64 65 66 |
# File 'lib/feast_fast/date.rb', line 64 def weeks_ago(step=1) self - 7*step end |
#weeks_since(step = 1) ⇒ Object
67 68 69 |
# File 'lib/feast_fast/date.rb', line 67 def weeks_since(step=1) self + 7*step end |