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