Skip to content

Commit

Permalink
Simplified API
Browse files Browse the repository at this point in the history
  • Loading branch information
javiertoledo committed Jun 19, 2012
1 parent a103921 commit 9087b86
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 90 deletions.
16 changes: 6 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Provincias

Stop storing spanish provinces in a static table in your database. Use this gem with its class Provincia and reclaim a few bytes of your storage quota.
Stop storing spanish provinces in a static table in your database. Use this gem and reclaim a few bytes of your storage quota.

## Thanks

Expand All @@ -22,17 +22,13 @@ Or install it yourself as:

## Usage

Install the gem as described before and use Province class to find and show province names.

You may want to include the Provincias module in your classes to access the Provicia class directly. In other case it will be namespaced under Provincias::Provincia.

The interface is simmilar to ActiveRecord's and provides provinces numeric codes you can use to search or easily link provinces to your classes.

Provincia.find(id) => "Some Province Name"
Provincia.find_by_name('Madrid') => Provincia(:id => 35, :name => 'Palmas, Las')
Provincia.find_by_name('wombat') => nil
Provincia.all => [...] # An array of Provincia instances
Provincia.all_for_select => [...] # An array in form [name, id] to use in select helpers in Rails
Provincias.find(28) => #<Provincia: @id=28, @name="Madrid">
Provincias.find_by_name('Palmas, Las') => #<Provincia: @id=35, @name="Palmas, Las">
Provincias.find_by_name('wombat') => nil
Provincias.all => [...] # An array of Provincia instances
Provincias.all_for_select => [...] # An array in form [name, id] to use in your select helpers in Rails

## Contributing

Expand Down
157 changes: 79 additions & 78 deletions lib/provincias.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,90 +2,91 @@
require "provincias/version"

module Provincias
class Provincia

attr_reader :id, :name

def initialize(hash)
@id = hash[:id]
@name = hash[:name]
def self.find(id)
@@provincias.each do |p|
return Provincia.new(p) if id == p[:id]
end
nil
end

def self.find(id)
@@provincias.each do |p|
return Provincia.new(p) if id == p[:id]
end
nil
def self.find_by_name(name)
@@provincias.each do |p|
return Provincia.new(p) if name == p[:name]
end
nil
end

def self.find_by_name(name)
@@provincias.each do |p|
return Provincia.new(p) if name == p[:name]
end
nil
end
def self.all
@@provincias.map { |p| Provincia.new(p) }
end

def self.all
@@provincias.map { |p| Provincia.new(p) }
end
def self.all_for_select
@@provincias.map { |p| [p[:name], p[:id]] }
end

def self.all_for_select
@@provincias.map { |p| [p[:name], p[:id]] }
end
class Provincia

attr_reader :id, :name

private
@@provincias = [
{:id => 1, :name => 'Álava'},
{:id => 2, :name => 'Albacete'},
{:id => 3, :name => 'Alicante'},
{:id => 4, :name => 'Almería'},
{:id => 5, :name => 'Avila'},
{:id => 6, :name => 'Badajoz'},
{:id => 7, :name => 'Illes Baleares'},
{:id => 8, :name => 'Barcelona'},
{:id => 9, :name => 'Burgos'},
{:id => 10, :name => 'Cáceres'},
{:id => 11, :name => 'Cádiz'},
{:id => 12, :name => 'Cástellón'},
{:id => 13, :name => 'Ciudad Real'},
{:id => 14, :name => 'Córdoba'},
{:id => 15, :name => 'Coruña, A'},
{:id => 16, :name => 'Cuenca'},
{:id => 17, :name => 'Girona'},
{:id => 18, :name => 'Granada'},
{:id => 19, :name => 'Guadalajara'},
{:id => 20, :name => 'Guipuzcoa'},
{:id => 21, :name => 'Huelva'},
{:id => 22, :name => 'Huesca'},
{:id => 23, :name => 'Jaén'},
{:id => 24, :name => 'León'},
{:id => 25, :name => 'Lleida'},
{:id => 26, :name => 'Rioja, La'},
{:id => 27, :name => 'Lugo'},
{:id => 28, :name => 'Madrid'},
{:id => 29, :name => 'Málaga'},
{:id => 30, :name => 'Murcia'},
{:id => 31, :name => 'Navarra'},
{:id => 32, :name => 'Ourense'},
{:id => 33, :name => 'Asturias'},
{:id => 34, :name => 'Palencia'},
{:id => 35, :name => 'Palmas, Las'},
{:id => 36, :name => 'Pontevedra'},
{:id => 37, :name => 'Salamanca'},
{:id => 38, :name => 'Santa Cruz de Tenerife'},
{:id => 39, :name => 'Cantabria'},
{:id => 40, :name => 'Segovia'},
{:id => 41, :name => 'Sevilla'},
{:id => 42, :name => 'Soria'},
{:id => 43, :name => 'Tarragona'},
{:id => 44, :name => 'Teruel'},
{:id => 45, :name => 'Toledo'},
{:id => 46, :name => 'Valencia'},
{:id => 47, :name => 'Valladolid'},
{:id => 48, :name => 'Vizcaya'},
{:id => 49, :name => 'Zamora'},
{:id => 50, :name => 'Zaragoza'},
{:id => 51, :name => 'Ceuta'},
{:id => 52, :name => 'Melilla'}]
def initialize(hash)
@id = hash[:id]
@name = hash[:name]
end
end
end

private
@@provincias = [
{:id => 1, :name => 'Álava'},
{:id => 2, :name => 'Albacete'},
{:id => 3, :name => 'Alicante'},
{:id => 4, :name => 'Almería'},
{:id => 5, :name => 'Avila'},
{:id => 6, :name => 'Badajoz'},
{:id => 7, :name => 'Illes Baleares'},
{:id => 8, :name => 'Barcelona'},
{:id => 9, :name => 'Burgos'},
{:id => 10, :name => 'Cáceres'},
{:id => 11, :name => 'Cádiz'},
{:id => 12, :name => 'Cástellón'},
{:id => 13, :name => 'Ciudad Real'},
{:id => 14, :name => 'Córdoba'},
{:id => 15, :name => 'Coruña, A'},
{:id => 16, :name => 'Cuenca'},
{:id => 17, :name => 'Girona'},
{:id => 18, :name => 'Granada'},
{:id => 19, :name => 'Guadalajara'},
{:id => 20, :name => 'Guipuzcoa'},
{:id => 21, :name => 'Huelva'},
{:id => 22, :name => 'Huesca'},
{:id => 23, :name => 'Jaén'},
{:id => 24, :name => 'León'},
{:id => 25, :name => 'Lleida'},
{:id => 26, :name => 'Rioja, La'},
{:id => 27, :name => 'Lugo'},
{:id => 28, :name => 'Madrid'},
{:id => 29, :name => 'Málaga'},
{:id => 30, :name => 'Murcia'},
{:id => 31, :name => 'Navarra'},
{:id => 32, :name => 'Ourense'},
{:id => 33, :name => 'Asturias'},
{:id => 34, :name => 'Palencia'},
{:id => 35, :name => 'Palmas, Las'},
{:id => 36, :name => 'Pontevedra'},
{:id => 37, :name => 'Salamanca'},
{:id => 38, :name => 'Santa Cruz de Tenerife'},
{:id => 39, :name => 'Cantabria'},
{:id => 40, :name => 'Segovia'},
{:id => 41, :name => 'Sevilla'},
{:id => 42, :name => 'Soria'},
{:id => 43, :name => 'Tarragona'},
{:id => 44, :name => 'Teruel'},
{:id => 45, :name => 'Toledo'},
{:id => 46, :name => 'Valencia'},
{:id => 47, :name => 'Valladolid'},
{:id => 48, :name => 'Vizcaya'},
{:id => 49, :name => 'Zamora'},
{:id => 50, :name => 'Zaragoza'},
{:id => 51, :name => 'Ceuta'},
{:id => 52, :name => 'Melilla'}]
end
4 changes: 2 additions & 2 deletions provincias.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ require File.expand_path('../lib/provincias/version', __FILE__)
Gem::Specification.new do |gem|
gem.authors = ["Javier Toledo"]
gem.email = ["[email protected]"]
gem.description = %q{Provides a Provincia class to search for and use spanish provinces in your apps.}
gem.summary = %q{Stop storing spanish provinces in a static table in your database. Use this gem with its class Provincia, reclaim a few bytes of your storage quota and sanitize your DB structure from unuseful static data.}
gem.description = %q{Provides a way to easily manage spanish provinces in your apps without creating additional tables in your database.}
gem.summary = %q{Stop storing spanish provinces in a static table in your database. Use this gem and reclaim a few bytes of your storage quota.}
gem.homepage = "https://github.com/agilemonkeys/provincias"

gem.files = `git ls-files`.split($\)
Expand Down

0 comments on commit 9087b86

Please sign in to comment.