class BerkeleyLibrary::TIND::API::DateRange

Constants

FORMAT

Attributes

from_time[R]
until_time[R]

Public Class Methods

ensure_date_range(date_range) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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
new(from_time:, until_time:, mtime: false) click to toggle source
# 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

Public Instance Methods

==(other) click to toggle source
# 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
Also aliased as: eql
eql(other)
Alias for: ==
mtime?() click to toggle source
# File lib/berkeley_library/tind/api/date_range.rb, line 17
def mtime?
  @mtime
end
to_params() click to toggle source
# 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

Private Instance Methods

format_param(t) click to toggle source
# File lib/berkeley_library/tind/api/date_range.rb, line 58
def format_param(t)
  tz = BerkeleyLibrary::TIND::Config.timezone
  t_utc = BerkeleyLibrary::Util::Times.ensure_utc(t) # just to be sure
  t_local = tz.utc_to_local(t_utc)
  t_local.strftime(FORMAT)
end