class Hash

Public Instance Methods

to_date() click to toggle source
# File lib/opium/extensions/hash.rb, line 11
def to_date
  retrieve_iso_key.to_date
end
to_datetime() click to toggle source
# File lib/opium/extensions/hash.rb, line 7
def to_datetime
  retrieve_iso_key.to_datetime
end
to_geo_point() click to toggle source
# File lib/opium/extensions/hash.rb, line 2
def to_geo_point
  return Opium::GeoPoint.new(self) if [:latitude, :longitude].all? {|required| self.key? required}
  raise ArgumentError.new( "invalid value for GeoPoint: \"#{self}\"" )
end
to_parse() click to toggle source
# File lib/opium/extensions/hash.rb, line 19
def to_parse
  Hash[ *self.flat_map {|key, value| [key, value.to_parse]} ]
end
to_time() click to toggle source
# File lib/opium/extensions/hash.rb, line 15
def to_time
  retrieve_iso_key.to_time
end

Private Instance Methods

retrieve_iso_key() click to toggle source
# File lib/opium/extensions/hash.rb, line 25
def retrieve_iso_key
  validates_keys_present( '__type', 'iso' )
  validate_key_equals( '__type', 'Date' )
  value_for_indifferent_key('iso')
end
validate_key_equals( key, value ) click to toggle source
# File lib/opium/extensions/hash.rb, line 36
def validate_key_equals( key, value )
  raise ArgumentError, "conversion to Date/Time expectes a #{key} of #{value}" unless value_for_indifferent_key( key ) == value
end
validates_keys_present(*expected_keys) click to toggle source
# File lib/opium/extensions/hash.rb, line 31
def validates_keys_present(*expected_keys)
  result = expected_keys - self.keys.map(&:to_s)
  raise ArgumentError, "expected key(s): #{result}" unless result.empty?
end
value_for_indifferent_key( key ) click to toggle source
# File lib/opium/extensions/hash.rb, line 40
def value_for_indifferent_key( key )
  self[key] || self[key.to_sym]
end