Class: Date

Inherits:
Object
  • Object
show all
Defined in:
lib/feast_fast/date.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.easter(year = self.today.year) ⇒ Object

Raises:

  • (TypeError)


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

.with_feasts(year, *statuses) ⇒ Object



19
20
21
# File 'lib/feast_fast/date.rb', line 19

def self.with_feasts(year, *statuses)
  FeastFast::DB.feasts(year, *statuses).keys.sort
end

Instance Method Details

#easter?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/feast_fast/date.rb', line 30

def easter?
  self == FeastFast::DB.data(self.year)[:easter]
end

#fastObject



26
27
28
# File 'lib/feast_fast/date.rb', line 26

def fast
  @fast ||= FeastFast::DB.date(self)[:fast]
end

#fast?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/feast_fast/date.rb', line 34

def fast?
  self.fast.status != FeastFast::Fast::STATUS::NO
end

#feastsObject



23
24
25
# File 'lib/feast_fast/date.rb', line 23

def feasts
  @feasts ||= FeastFast::DB.date(self)[:feasts]
end

#feasts?Boolean

Returns:

  • (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_easterObject



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_agoObject



70
# File 'lib/feast_fast/date.rb', line 70

def week_ago() weeks_ago end

#week_sinceObject



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