provincias 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +10 -7
- data/lib/provincias.rb +20 -5
- data/lib/provincias/version.rb +1 -1
- data/test/test_api.rb +11 -0
- metadata +7 -10
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8e0142d3ca78de4e327b1bf0ae09de7396486d9a
|
4
|
+
data.tar.gz: 95c4cae04e6ea67ec46b3ea41bedfecbf09f5dba
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1699f369933d3984bf89f28368b39ccdd58e3e62222218827ab7a064963f612df1668b54312252621450bd0f459089efb671485a844b4da4387c8aa7daf1bb00
|
7
|
+
data.tar.gz: 3d96f844964fb65b4cb140bcdfe0ea77c30519126b2443090405b91c46636fdcb6c8299a06a760035b6e06efcc2580f4defc350b2fb33937fe6be67d6dbadcc5
|
data/README.md
CHANGED
@@ -20,20 +20,22 @@ O instálala ejecutando el siguiente comando:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
La interfaz es similar a la de ActiveRecord, salvando las distancias. La gema provee
|
23
|
+
La interfaz es similar a la de ActiveRecord, salvando las distancias. La gema provee códigos numéricos e identificadores de tipo string llamados slugs (Cuyo funcionamiento emula al de la gema friendlyId) y que puedes usar para enlazarlas con tus modelos. Es posible buscar tanto provincias como ciudades usando indiferentemente IDs o slugs. Los slugs se generan a partir de los nombres pasando todos los caracteres a minúscula, eliminando símbolos y caracteres no alfanuméricos y separando cada palabra con un guión. Por ejemplo: `"Iruña Oka/Iruña de Oca"` => `"iruna-oka-iruna-de-oca"`
|
24
24
|
|
25
25
|
Gestión de provincias:
|
26
26
|
|
27
|
-
Provincias.find(28) => #<Provincia: @id=28, @name="Madrid">
|
28
|
-
Provincias.
|
27
|
+
Provincias.find(28) => #<Provincia: @id=28, @name="Madrid", @slug="madrid">
|
28
|
+
Provincias.find("madrid") => #<Provincia: @id=28, @name="Madrid", @slug="madrid">
|
29
|
+
Provincias.find_by_name('Palmas, Las') => #<Provincia: @id=35, @name="Palmas, Las", @slug="palmas-las">
|
29
30
|
Provincias.find_by_name('wombat') => nil
|
30
31
|
Provincias.all => [...] # Un array de provincias
|
31
32
|
Provincias.all_for_select => [...] # Un array de la forma [name, id] para usarlo en los helpers de tipo select en Rails
|
32
33
|
|
33
34
|
Gestión de ciudades de forma absoluta:
|
34
35
|
|
35
|
-
Provincias::Ciudades.find(35017) => #<Ciudad: @id=35017, @name="Puerto del Rosario" ...>
|
36
|
-
Provincias::Ciudades.
|
36
|
+
Provincias::Ciudades.find(35017) => #<Ciudad: @id=35017, @name="Puerto del Rosario", @slug="puerto-del-rosario"...>
|
37
|
+
Provincias::Ciudades.find("puerto-del-rosario") => #<Ciudad: @id=35017, @name="Puerto del Rosario", @slug="puerto-del-rosario"...>
|
38
|
+
Provincias::Ciudades.find_by_name("Puerto del Rosario") => #<Ciudad: @id=35017, @name="Puerto del Rosario", @slug="puerto-del-rosario" ...>
|
37
39
|
Provincias::Ciudades.all => [...] # Un array de ciudades
|
38
40
|
Provincias::Ciudades.all_for_select => [...] # Un array de la forma [name, id] para usarlo en los helpers de tipo select en Rails
|
39
41
|
Provincias::Ciudades.find_by_name("Puerto del Rosario").provincia => #<Provincia: @id=35, @name="Palmas, Las">
|
@@ -42,7 +44,8 @@ Gestión de ciudades de forma relativa a una provincia (Esta es la parte que no
|
|
42
44
|
|
43
45
|
Provincias.find(28).ciudades => [...] # Un array con las ciudades de la provincia de Madrid
|
44
46
|
Provincias.find(28).ciudades_for_select => [...] # Un array con las ciudades de la provincia de Madrid de la forma [name, id] para usarlo en los helpers de tipo select en Rails
|
45
|
-
Provincias.find(28).find_ciudad(28006) => #<Ciudad: @id=28006, @name="Alcobendas" ...>
|
46
|
-
Provincias.find(28).
|
47
|
+
Provincias.find(28).find_ciudad(28006) => #<Ciudad: @id=28006, @name="Alcobendas", @slug="alcobendas" ...>
|
48
|
+
Provincias.find(28).find_ciudad("alcobendas") => #<Ciudad: @id=28006, @name="Alcobendas", @slug="alcobendas" ...>
|
49
|
+
Provincias.find(28).find_ciudad_by_name("Alcobendas") => #<Ciudad: @id=28006, @name="Alcobendas", @slug="alcobendas" ...>
|
47
50
|
|
48
51
|
Todas las búsquedas retornan nil si no encuentran coincidencias con lo que estás buscando.
|
data/lib/provincias.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
require "provincias/version"
|
3
3
|
require 'csv'
|
4
|
+
require 'i18n'
|
4
5
|
|
5
6
|
module Provincias
|
6
7
|
|
7
8
|
def self.find(id)
|
8
|
-
@@provincias[id]
|
9
|
+
@@provincias[id] || self.find_by_slug(id)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.find_by_slug(slug)
|
13
|
+
@@provincias.values.select { |p| p.slug == slug }.first
|
9
14
|
end
|
10
15
|
|
11
16
|
def self.find_by_name(name)
|
@@ -21,9 +26,10 @@ module Provincias
|
|
21
26
|
end
|
22
27
|
|
23
28
|
class Provincia
|
24
|
-
attr_reader :id, :name
|
29
|
+
attr_reader :id, :name, :slug
|
25
30
|
def initialize(row)
|
26
31
|
id, @name = row
|
32
|
+
@slug = I18n.transliterate(@name).downcase.scan(/\w+/).join('-')
|
27
33
|
@id = id.to_i
|
28
34
|
end
|
29
35
|
|
@@ -36,7 +42,11 @@ module Provincias
|
|
36
42
|
end
|
37
43
|
|
38
44
|
def find_ciudad(id)
|
39
|
-
ciudades.select { |c| c.id == id }.first
|
45
|
+
ciudades.select { |c| c.id == id }.first || self.find_ciudad_by_slug(id)
|
46
|
+
end
|
47
|
+
|
48
|
+
def find_ciudad_by_slug(slug)
|
49
|
+
ciudades.select { |c| c.slug == slug }.first
|
40
50
|
end
|
41
51
|
|
42
52
|
def find_ciudad_by_name(name)
|
@@ -55,7 +65,11 @@ module Provincias
|
|
55
65
|
module Ciudades
|
56
66
|
|
57
67
|
def self.find(id)
|
58
|
-
@@ciudades[id]
|
68
|
+
@@ciudades[id] || self.find_by_slug(id)
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.find_by_slug(slug)
|
72
|
+
@@ciudades.values.select { |c| c.slug == slug }.first
|
59
73
|
end
|
60
74
|
|
61
75
|
def self.find_by_name(name)
|
@@ -75,9 +89,10 @@ module Provincias
|
|
75
89
|
end
|
76
90
|
|
77
91
|
class Ciudad
|
78
|
-
attr_reader :provincia_id, :id, :dc, :name
|
92
|
+
attr_reader :provincia_id, :id, :dc, :name, :slug
|
79
93
|
def initialize(row)
|
80
94
|
provincia_id, number, @dc, @name = row
|
95
|
+
@slug = I18n.transliterate(@name).downcase.scan(/\w+/).join('-')
|
81
96
|
@provincia_id = provincia_id.to_i
|
82
97
|
@id = (provincia_id+number).to_i
|
83
98
|
end
|
data/lib/provincias/version.rb
CHANGED
data/test/test_api.rb
CHANGED
@@ -10,8 +10,12 @@ class TestApi < Test::Unit::TestCase
|
|
10
10
|
assert_nil Provincias.find(100000)
|
11
11
|
assert_equal Provincias.find(28).id, 28
|
12
12
|
assert_equal Provincias.find(28).name, "Madrid"
|
13
|
+
assert_equal Provincias.find(28).slug, "madrid"
|
14
|
+
assert_equal Provincias.find('madrid').name, "Madrid"
|
15
|
+
assert_equal Provincias.find('palmas-las').name, "Palmas, Las"
|
13
16
|
assert_equal Provincias.find_by_name('Palmas, Las').id, 35
|
14
17
|
assert_equal Provincias.find_by_name('Palmas, Las').name, 'Palmas, Las'
|
18
|
+
assert_equal Provincias.find_by_name('Palmas, Las').slug, 'palmas-las'
|
15
19
|
assert_nil Provincias.find_by_name('wombat')
|
16
20
|
assert_instance_of Array, Provincias.all
|
17
21
|
assert_instance_of Provincias::Provincia, Provincias.all.first
|
@@ -27,10 +31,15 @@ class TestApi < Test::Unit::TestCase
|
|
27
31
|
assert_not_nil Provincias::Ciudades.find(35017)
|
28
32
|
assert_equal Provincias::Ciudades.find(35017).id, 35017
|
29
33
|
assert_equal Provincias::Ciudades.find(35017).name, 'Puerto del Rosario'
|
34
|
+
assert_equal Provincias::Ciudades.find(35017).slug, 'puerto-del-rosario'
|
35
|
+
assert_equal Provincias::Ciudades.find('puerto-del-rosario').id, 35017
|
36
|
+
assert_equal Provincias::Ciudades.find('puerto-del-rosario').name, 'Puerto del Rosario'
|
37
|
+
assert_equal Provincias::Ciudades.find('puerto-del-rosario').slug, 'puerto-del-rosario'
|
30
38
|
assert_nil Provincias::Ciudades.find_by_name('wombat')
|
31
39
|
assert_instance_of Provincias::Ciudades::Ciudad, Provincias::Ciudades.find_by_name('Palmas de Gran Canaria, Las')
|
32
40
|
assert_equal Provincias::Ciudades.find_by_name('Palmas de Gran Canaria, Las').id, 35016
|
33
41
|
assert_equal Provincias::Ciudades.find_by_name('Palmas de Gran Canaria, Las').name, 'Palmas de Gran Canaria, Las'
|
42
|
+
assert_equal Provincias::Ciudades.find_by_name('Palmas de Gran Canaria, Las').slug, 'palmas-de-gran-canaria-las'
|
34
43
|
assert_instance_of Array, Provincias.find(28).ciudades
|
35
44
|
assert_instance_of Provincias::Ciudades::Ciudad, Provincias.find(28).ciudades.first
|
36
45
|
assert Provincias.find(28).ciudades.map { |c| c.name }.include?("Madrid")
|
@@ -38,7 +47,9 @@ class TestApi < Test::Unit::TestCase
|
|
38
47
|
assert_nil Provincias.find(28).find_ciudad(999999999)
|
39
48
|
assert_instance_of Provincias::Ciudades::Ciudad, Provincias.find(28).find_ciudad(28001)
|
40
49
|
assert_equal "Acebeda, La", Provincias.find(28).find_ciudad(28001).name
|
50
|
+
assert_equal "Acebeda, La", Provincias.find(28).find_ciudad("acebeda-la").name
|
41
51
|
assert_equal 28001, Provincias.find(28).find_ciudad(28001).id
|
52
|
+
assert_equal 28001, Provincias.find(28).find_ciudad("acebeda-la").id
|
42
53
|
assert_instance_of Provincias::Ciudades::Ciudad, Provincias.find(28).find_ciudad_by_name("Alcobendas")
|
43
54
|
assert_nil Provincias.find(28).find_ciudad_by_name("wombat")
|
44
55
|
assert_equal "Alcobendas", Provincias.find(28).find_ciudad_by_name("Alcobendas").name
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: provincias
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Javier Toledo
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-12-12 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Provides a way to easily manage spanish provinces in your apps without
|
15
14
|
creating additional tables in your database.
|
@@ -33,29 +32,27 @@ files:
|
|
33
32
|
- test/test_api.rb
|
34
33
|
homepage: https://github.com/agilemonkeys/provincias
|
35
34
|
licenses: []
|
35
|
+
metadata: {}
|
36
36
|
post_install_message:
|
37
37
|
rdoc_options: []
|
38
38
|
require_paths:
|
39
39
|
- lib
|
40
40
|
required_ruby_version: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
41
|
requirements:
|
43
|
-
- -
|
42
|
+
- - '>='
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: '0'
|
46
45
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
46
|
requirements:
|
49
|
-
- -
|
47
|
+
- - '>='
|
50
48
|
- !ruby/object:Gem::Version
|
51
49
|
version: '0'
|
52
50
|
requirements: []
|
53
51
|
rubyforge_project:
|
54
|
-
rubygems_version:
|
52
|
+
rubygems_version: 2.0.6
|
55
53
|
signing_key:
|
56
|
-
specification_version:
|
54
|
+
specification_version: 4
|
57
55
|
summary: Stop storing spanish provinces in a static table in your database. Use this
|
58
56
|
gem and reclaim a few bytes of your storage quota.
|
59
57
|
test_files:
|
60
58
|
- test/test_api.rb
|
61
|
-
has_rdoc:
|