Class: BerkeleyLibrary::TIND::API::DateRange
- Inherits:
-
Object
- Object
- BerkeleyLibrary::TIND::API::DateRange
- Defined in:
- lib/berkeley_library/tind/api/date_range.rb
Constant Summary collapse
- FORMAT =
'%Y-%m-%d %H:%M:%S'.freeze
Instance Attribute Summary collapse
-
#from_time ⇒ Object
readonly
Returns the value of attribute from_time.
-
#until_time ⇒ Object
readonly
Returns the value of attribute until_time.
Class Method Summary collapse
- .ensure_date_range(date_range) ⇒ Object
- .ensure_valid_range(from_time, until_time) ⇒ Object
- .from_range(range) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
- #eql ⇒ Object
-
#initialize(from_time:, until_time:, mtime: false) ⇒ DateRange
constructor
A new instance of DateRange.
- #mtime? ⇒ Boolean
- #to_params ⇒ Object
Constructor Details
#initialize(from_time:, until_time:, mtime: false) ⇒ DateRange
Returns a new instance of DateRange.
12 13 14 15 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 12 def initialize(from_time:, until_time:, mtime: false) @from_time, @until_time = DateRange.ensure_valid_range(from_time, until_time) @mtime = mtime end |
Instance Attribute Details
#from_time ⇒ Object (readonly)
Returns the value of attribute from_time.
10 11 12 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 10 def from_time @from_time end |
#until_time ⇒ Object (readonly)
Returns the value of attribute until_time.
10 11 12 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 10 def until_time @until_time end |
Class Method Details
.ensure_date_range(date_range) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 40 def ensure_date_range(date_range) return unless date_range return date_range if date_range.is_a?(DateRange) return DateRange.from_range(date_range) if date_range.respond_to?(:first) && date_range.respond_to?(:last) raise ArgumentError, "Can't convert #{date_range.inspect} to #{DateRange}" end |
.ensure_valid_range(from_time, until_time) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 48 def ensure_valid_range(from_time, until_time) ftime, utime = [from_time, until_time].map { |t| BerkeleyLibrary::Util::Times.ensure_utc(t) } return [ftime, utime] if ftime <= utime raise ArgumentError, "Not a valid range: #{from_time.inspect}..#{until_time.inspect}" end |
Instance Method Details
#==(other) ⇒ Object
29 30 31 32 33 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 29 def ==(other) return false unless other.class == self.class [from_time, until_time] == [other.from_time, other.until_time] end |
#eql ⇒ Object
27 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 27 alias eql == |
#mtime? ⇒ Boolean
17 18 19 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 17 def mtime? @mtime end |
#to_params ⇒ Object
21 22 23 24 25 |
# File 'lib/berkeley_library/tind/api/date_range.rb', line 21 def to_params { d1: format_param(from_time), d2: format_param(until_time) }.tap do |params| params[:dt] = 'm' if mtime? end end |