From 32ddeffff60374f87339a745a76803836a68d83c Mon Sep 17 00:00:00 2001
From: Anderson Bravalheri <andersonbravalheri@gmail.com>
Date: Tue, 19 Jul 2011 02:28:53 -0300
Subject: [PATCH] Improviments in configuration DSL (no argument for block
 configuration needed).

---
 lib/geocoder.rb               | 16 ++++++++++++++++
 lib/geocoder/configuration.rb |  6 +++---
 test/configuration_test.rb    |  2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/lib/geocoder.rb b/lib/geocoder.rb
index 4e648617..edcd8ad3 100644
--- a/lib/geocoder.rb
+++ b/lib/geocoder.rb
@@ -9,6 +9,17 @@ require "geocoder/models/mongo_mapper"
 module Geocoder
   extend self
 
+  # This method can be used to change some functional aspects, like,
+  # the geocoding service provider, or the units of calculations.
+  # Please see {include:Configuration}
+  def configure(&block)
+    if block_given?
+      module_eval(&block)
+    else
+      Configuration.instance
+    end
+  end
+
   ##
   # Search for information about an address or a set of coordinates.
   #
@@ -74,6 +85,10 @@ module Geocoder
 
   private # -----------------------------------------------------------------
 
+  def config # :nodoc
+    Configuration.instance
+  end
+
   ##
   # Get a Lookup object (which communicates with the remote geocoding API).
   # Takes a search query and returns an IP or street address Lookup
@@ -139,3 +154,4 @@ if defined?(Rails)
   require "geocoder/railtie"
   Geocoder::Railtie.insert
 end
+
diff --git a/lib/geocoder/configuration.rb b/lib/geocoder/configuration.rb
index 7d1e7cc8..108ba674 100644
--- a/lib/geocoder/configuration.rb
+++ b/lib/geocoder/configuration.rb
@@ -9,9 +9,9 @@ module Geocoder
   # == Geocoder Configuration
   #
   # The configuration of Geocoder can be done in to ways:
-  # - using +Geocoder#configure+ method:
+  # @example Using +Geocoder#configure+ method:
   #
-  #   Geocoder.configure do |config|
+  #   Geocoder.configure do
   #     config.timeout      = 3           # geocoding service timeout (secs)
   #     config.lookup       = :google     # name of geocoding service (symbol)
   #     config.language     = :en         # ISO-639 language code
@@ -32,7 +32,7 @@ module Geocoder
   #     @method = :spherical # :spherical or :linear
   #   end
   #
-  # - or using +Geocoder::Configuration+ class directly, like in:
+  # @example Using +Geocoder::Configuration+ class directly, like in:
   #
   #   Geocoder::Configuration.language = 'pt-BR'
   #
diff --git a/test/configuration_test.rb b/test/configuration_test.rb
index ae98c9b1..2812fe43 100644
--- a/test/configuration_test.rb
+++ b/test/configuration_test.rb
@@ -33,7 +33,7 @@ class ConfigurationTest < Test::Unit::TestCase
 
   # --- Geocoder#configure method configuration ---
   def test_geocoder_configuration
-    Geocoder.configure { |config| config.units = :mi }
+    Geocoder.configure { config.units = :mi }
 
     assert_equal Geocoder::Configuration.units, :mi
     distance = Geocoder::Calculations.distance_between([0,0], [0,1]).round
-- 
GitLab