lib/mongoid/geo/point.rb in mongoid_geo-0.1.3 vs lib/mongoid/geo/point.rb in mongoid_geo-0.1.4

- old
+ new

@@ -1,18 +1,43 @@ module Mongoid::Geo module Point # convert hash or object to [x, y] of floats def to_points + v = self.kind_of?(Array) ? self.map {|p| p.kind_of?(Fixnum) ? p.to_f : p.extend(Mongoid::Geo::Point).to_point } : self + v.flatten + end + + def to_point case self when Hash return [self[:lat], self[:lng]] if self[:lat] return [self[:latitude], self[:longitude]] if self[:latitude] raise "Hash must contain either :lat, :lng or :latitude, :longitude keys to be converted to a geo point" + when nil + nil + when Array + self.map(&:to_f) else return [self.lat, self.lng] if self.respond_to? :lat return [self.latitude, self.longitude] if self.respond_to? :latitude - self + self.to_f # raise 'Object must contain either #lat, #lng or #latitude, #longitude methods to be converted to a geo point' end end end end + +module Mongoid::Geo + module PointConversion + protected + + def to_point v + return v if v.kind_of? Fixnum + v.extend(Mongoid::Geo::Point).to_point + end + + def to_points v + return v if v.kind_of? Fixnum + v.extend(Mongoid::Geo::Point).to_points + end + end +end \ No newline at end of file