Class: BerkeleyLibrary::TIND::API::DateRange

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(from_time:, until_time:, mtime: false) ⇒ DateRange

Returns a new instance of DateRange.

[View source]

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_timeObject (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_timeObject (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

Raises:

  • (ArgumentError)
[View source]

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

Raises:

  • (ArgumentError)
[View source]

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

.from_range(range) ⇒ Object

[View source]

36
37
38
# File 'lib/berkeley_library/tind/api/date_range.rb', line 36

def from_range(range)
  DateRange.new(from_time: range.first, until_time: range.last)
end

Instance Method Details

#==(other) ⇒ Object

[View source]

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

#eqlObject

[View source]

27
# File 'lib/berkeley_library/tind/api/date_range.rb', line 27

alias eql ==

#mtime?Boolean

Returns:

  • (Boolean)
[View source]

17
18
19
# File 'lib/berkeley_library/tind/api/date_range.rb', line 17

def mtime?
  @mtime
end

#to_paramsObject

[View source]

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