module FakeRedis::GeoCommands
def do_georadius(set, center, radius, unit, args)
def do_georadius(set, center, radius, unit, args) points = set.points_within_radius(center, radius) options = georadius_options(args) if options[:asc] points.sort_by! { |p| p.distance_to(center) } elsif options[:desc] points.sort_by! { |p| -p.distance_to(center) } end points = points.take(options[:count]) if options[:count] extras = options[:extras] return points.map(&:name) if extras.empty? points.map do |point| member = [point.name] extras.each do |extra| case extra when "WITHCOORD" member << [point.lon.to_s, point.lat.to_s] when "WITHDIST" distance = point.distance_to(center) distance_in_units = distance / DISTANCE_UNITS[unit] member << distance_in_units.round(REDIS_DOUBLE_PRECISION).to_s when "WITHHASH" member << point.geohash(REDIS_GEOHASH_SIZE) end end member end end