Module: Periods::Modules::Period::InstanceMethods
- Defined in:
- lib/periods/modules/period.rb
Instance Attribute Summary collapse
-
#end_date ⇒ Date
readonly
Returns the end date of this period.
-
#start_date ⇒ Date
readonly
Returns the start date of this period.
Instance Method Summary collapse
-
#<=>(period) ⇒ Fixnum
Test whether the given period is older, newer or equal to this one.
-
#==(period) ⇒ Boolean
Test whether the given period is equal to this one.
-
#days ⇒ Fixnum
Returns number of days in period.
-
#end_year ⇒ Fixnum
Returns end year of period.
-
#include?(period) ⇒ Boolean
Test whether the given date or period is included in this one.
-
#initialize(start_date, end_date = nil) ⇒ Object
Initialize a new period with its start and end date.
-
#next ⇒ Period
Returns next period.
-
#previous ⇒ Period
Returns previous period.
-
#start_year ⇒ Fixnum
Returns start year of period.
-
#to_s ⇒ String
Return string representation of period.
Instance Attribute Details
#end_date ⇒ Date (readonly)
Returns the end date of this period.
20 21 22 |
# File 'lib/periods/modules/period.rb', line 20 def end_date @end_date end |
#start_date ⇒ Date (readonly)
Returns the start date of this period.
16 17 18 |
# File 'lib/periods/modules/period.rb', line 16 def start_date @start_date end |
Instance Method Details
#<=>(period) ⇒ Fixnum
Test whether the given period is older, newer or equal to this one.
70 71 72 73 74 75 76 77 78 |
# File 'lib/periods/modules/period.rb', line 70 def <=>(period) if start_date > period.start_date 1 elsif start_date < period.start_date -1 else 0 end end |
#==(period) ⇒ Boolean
Test whether the given period is equal to this one. A period is considered equal if it has the same start and end date.
59 60 61 |
# File 'lib/periods/modules/period.rb', line 59 def ==(period) start_date == period.start_date && end_date == period.end_date end |
#days ⇒ Fixnum
Returns number of days in period.
127 128 129 |
# File 'lib/periods/modules/period.rb', line 127 def days end_date.yday - start_date.yday + 1 end |
#end_year ⇒ Fixnum
Returns end year of period.
157 158 159 |
# File 'lib/periods/modules/period.rb', line 157 def end_year end_date.year end |
#include?(period) ⇒ Boolean
Test whether the given date or period is included in this one.
180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/periods/modules/period.rb', line 180 def include?(period) if period.is_a?(Date) start_date <= period && period <= end_date elsif period.is_a?(String) date = Date.parse(period.to_s) start_date <= date && date <= end_date elsif period.is_a?(Period) start_date <= period.start_date && period.end_date <= end_date else false end end |
#initialize(start_date, end_date = nil) ⇒ Object
Initialize a new period with its start and end date.
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/periods/modules/period.rb', line 31 def initialize(start_date, end_date = nil) if start_date.is_a?(Period) @start_date = start_date.start_date @end_date = start_date.end_date elsif end_date.nil? raise ArgumentError, "Period is missing end_date, e.g. Period.new(start_date, end_date)." else @start_date = Date.parse(start_date.to_s) @end_date = Date.parse(end_date.to_s) end end |
#next ⇒ Period
Returns next period.
94 95 96 |
# File 'lib/periods/modules/period.rb', line 94 def next self.class.new(start_date + days, end_date + days) end |
#previous ⇒ Period
Returns previous period.
112 113 114 |
# File 'lib/periods/modules/period.rb', line 112 def previous self.class.new(start_date - days, end_date - days) end |
#start_year ⇒ Fixnum
Returns start year of period.
142 143 144 |
# File 'lib/periods/modules/period.rb', line 142 def start_year start_date.year end |
#to_s ⇒ String
Return string representation of period.
204 205 206 |
# File 'lib/periods/modules/period.rb', line 204 def to_s "#{start_date.strftime("%d.%m.%Y")} - #{end_date.strftime("%d.%m.%Y")}" end |