From 0bdf1c31d72e9d4b1deb2bae0bac0a2f505b5fcf Mon Sep 17 00:00:00 2001
From: Alex Reisner <alex@alexreisner.com>
Date: Thu, 3 Jun 2010 09:06:04 -0400
Subject: [PATCH] Extract common near scope options to method.

---
 lib/geocoder.rb | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/lib/geocoder.rb b/lib/geocoder.rb
index 25f7aaab..52a1260b 100644
--- a/lib/geocoder.rb
+++ b/lib/geocoder.rb
@@ -81,16 +81,13 @@ module Geocoder
         "COS(#{lat_attr} * PI() / 180) * " +
         "POWER(SIN((#{longitude} - #{lon_attr}) * " +
         "PI() / 180 / 2), 2) ))"
-      {
+      default_near_scope_options(latitude, longitude, radius, options).merge(
         :select => "*, #{distance} AS distance",
         :conditions => \
           ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
           coordinate_bounds(latitude, longitude, radius),
-        :having => "#{distance} <= #{radius}",
-        :order  => options[:order],
-        :limit  => options[:limit],
-        :offset  => options[:offset]
-      }
+        :having => "#{distance} <= #{radius}"
+      )
     end
 
     ##
@@ -102,13 +99,21 @@ module Geocoder
     def approx_near_scope_options(latitude, longitude, radius, options)
       lat_attr = geocoder_options[:latitude]
       lon_attr = geocoder_options[:longitude]
-      {
+      default_near_scope_options(latitude, longitude, radius, options).merge(
         :conditions => \
           ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
-          coordinate_bounds(latitude, longitude, radius),
+          coordinate_bounds(latitude, longitude, radius)
+      )
+    end
+    
+    ##
+    # Options used for any near-like scope.
+    #
+    def default_near_scope_options(latitude, longitude, radius, options)
+      {
         :order  => options[:order],
         :limit  => options[:limit],
-        :offset  => options[:offset]
+        :offset => options[:offset]
       }
     end
     
-- 
GitLab