Class: TimeKeeper::TimeRange
- Inherits:
-
Object
- Object
- TimeKeeper::TimeRange
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/time_keeper/time_range.rb
Constant Summary collapse
- TIME_FORMAT_REGEX =
/^([0-9]){1,2}(:[0-9]{2})?([ ])*(am|pm)?([ ])*(to|-)([ ])*([0-9]){1,2}(:[0-9]{2})?([ ])*(am|pm)?$/i
Instance Attribute Summary collapse
-
#end_day ⇒ Object
Returns the value of attribute end_day.
-
#end_time ⇒ Object
Returns the value of attribute end_time.
-
#range ⇒ Object
Returns the value of attribute range.
-
#start_day ⇒ Object
Returns the value of attribute start_day.
-
#start_time ⇒ Object
Returns the value of attribute start_time.
Instance Method Summary collapse
- #days_elapsed ⇒ Object
- #duration_in_hours ⇒ Object
- #duration_in_minutes ⇒ Object
- #duration_in_seconds ⇒ Object
-
#initialize(range) ⇒ TimeRange
constructor
A new instance of TimeRange.
- #parse ⇒ Object
Constructor Details
#initialize(range) ⇒ TimeRange
Returns a new instance of TimeRange.
10 11 12 |
# File 'lib/time_keeper/time_range.rb', line 10 def initialize(range) @range = range.strip.downcase.gsub(/\s*(-|to)\s*/, '-') end |
Instance Attribute Details
#end_day ⇒ Object
Returns the value of attribute end_day.
4 5 6 |
# File 'lib/time_keeper/time_range.rb', line 4 def end_day @end_day end |
#end_time ⇒ Object
Returns the value of attribute end_time.
4 5 6 |
# File 'lib/time_keeper/time_range.rb', line 4 def end_time @end_time end |
#range ⇒ Object
Returns the value of attribute range.
4 5 6 |
# File 'lib/time_keeper/time_range.rb', line 4 def range @range end |
#start_day ⇒ Object
Returns the value of attribute start_day.
4 5 6 |
# File 'lib/time_keeper/time_range.rb', line 4 def start_day @start_day end |
#start_time ⇒ Object
Returns the value of attribute start_time.
4 5 6 |
# File 'lib/time_keeper/time_range.rb', line 4 def start_time @start_time end |
Instance Method Details
#days_elapsed ⇒ Object
24 25 26 |
# File 'lib/time_keeper/time_range.rb', line 24 def days_elapsed @start_time.in_seconds > @end_time.in_seconds ? 1 : 0 end |
#duration_in_hours ⇒ Object
36 37 38 |
# File 'lib/time_keeper/time_range.rb', line 36 def duration_in_hours ((duration_in_seconds.to_f/3600)*100).round.to_f/100 end |
#duration_in_minutes ⇒ Object
32 33 34 |
# File 'lib/time_keeper/time_range.rb', line 32 def duration_in_minutes ((duration_in_seconds.to_f/60)*100).round.to_f/100 end |
#duration_in_seconds ⇒ Object
28 29 30 |
# File 'lib/time_keeper/time_range.rb', line 28 def duration_in_seconds (days_elapsed * 24 * 60 * 60) + (@end_time.in_seconds - @start_time.in_seconds) end |
#parse ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/time_keeper/time_range.rb', line 14 def parse raise "The range data (#{range.inspect}) you have provided is invalid" unless self.valid? parsed_range = @range.gsub('to', '-').split('-').map(&:strip) @start_time = TimeKeeper::CustomTime.new(parsed_range.first).parse @end_time = TimeKeeper::CustomTime.new(parsed_range.last).parse @start_day = 0 @end_day = days_elapsed self end |