id_ecuador 0.0.1.alpha

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in id_ecuador.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Mario Andrés Correa
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # IdEcuador
2
+ [![Build Status](https://travis-ci.org/macool/id_ecuador.png?branch=master)](https://travis-ci.org/macool/id_ecuador)
3
+
4
+ Gema para validar la cédula o ruc de Ecuador
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'id_ecuador'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install id_ecuador
19
+
20
+ ## Usage
21
+
22
+ ```ruby
23
+ cedula = IdEcuador::Id.new "1104680135"
24
+ cedula.valid? # => true
25
+ cedula.tipo_id # => "Cédula Persona natural"
26
+ cedula.codigo_provincia # => 11
27
+
28
+ cedula_invalida = IdEcuador::Id.new "1105680134"
29
+ cedula_invalida.errors # => ["ID inválida"]
30
+ ```
31
+
32
+ No validar automáticamente:
33
+ ```ruby
34
+ cedula = IdEcuador::Id.new "1104680135", auto_validate: false
35
+ cedula.validate!.valid?
36
+ ```
37
+
38
+ ## Rails
39
+
40
+ ```ruby
41
+ class User < ActiveRecord::Base
42
+ validates_id :identificacion
43
+ end
44
+ ```
45
+
46
+ Con opciones:
47
+ ```ruby
48
+ class User < ActiveRecord::Base
49
+ validates_id :identificacion, allow_blank: false, message: "Cédula inválida", only: [:cedula, :ruc]
50
+ end
51
+ ```
52
+
53
+ Ejemplo API Rails:
54
+ ```ruby
55
+ user = User.new identificacion: "110468135001"
56
+ user.identificacion_id_validator.class # => IdEcuador::Id
57
+ user.identificacion_tipo_id # => "RUC Persona natural"
58
+ user.identificacion_codigo_provincia # => 11
59
+ ```
60
+
61
+ ## Contributing
62
+
63
+ 1. Fork it
64
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
65
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
66
+ 4. Push to the branch (`git push origin my-new-feature`)
67
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task default: :spec
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'id_ecuador/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "id_ecuador"
8
+ spec.version = IdEcuador::VERSION
9
+ spec.authors = ["Mario Andrés Correa"]
10
+ spec.email = ["a@macool.me"]
11
+ spec.description = %q{Validate Ecuador's CI and RUC}
12
+ spec.summary = %q{Gem to validate Ecuador's CI and RUC}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "supermodel"
25
+
26
+ end
data/lib/id_ecuador.rb ADDED
@@ -0,0 +1,8 @@
1
+ require "id_ecuador/version"
2
+ require "id_ecuador/id"
3
+ require "id_ecuador/model_additions"
4
+ require "id_ecuador/railtie" if defined? Rails
5
+
6
+ module IdEcuador
7
+ # Your code goes here...
8
+ end
@@ -0,0 +1,151 @@
1
+ # encoding: utf-8
2
+
3
+ module IdEcuador
4
+ class Id
5
+
6
+ attr_reader :errors, :tipo_id, :codigo_provincia, :tipo_id_sym
7
+
8
+ def initialize(id="", options={})
9
+ @id = id.to_s
10
+ @errors = []
11
+
12
+ defaults = {
13
+ auto_validate: true
14
+ }
15
+ @options = defaults.merge options
16
+ validate! if @options[:auto_validate]
17
+ end
18
+ def valid?
19
+ validate! unless already_validated
20
+ @errors.empty?
21
+ end
22
+ def validate!
23
+ @already_validated = true
24
+ validate_length and evaluate_province_code and evaluate_third_digit
25
+ self
26
+ end
27
+ def already_validated
28
+ !!@already_validated
29
+ end
30
+
31
+ protected
32
+ def validate_length
33
+ if [10, 13].include?(@id.length)
34
+ true
35
+ else
36
+ @errors << "Longitud incorrecta"
37
+ false
38
+ end
39
+ end
40
+ def evaluate_province_code
41
+ provinces = 22
42
+ code = @id.slice(0,2).to_i
43
+ if code < 1 or code > provinces
44
+ @errors << "Código de provincia incorrecto"
45
+ false
46
+ else
47
+ @codigo_provincia = code
48
+ true
49
+ end
50
+ end
51
+ def evaluate_third_digit
52
+ @third_digit = @id[2].to_i
53
+
54
+ # to keep products in next method:
55
+ @products = []
56
+
57
+ if [7, 8].include?(@third_digit)
58
+ @errors << "Tercer dígito es inválido"
59
+ return false
60
+ elsif @third_digit < 6
61
+ if @id.length > 10
62
+ @tipo_id = "RUC Persona natural"
63
+ @tipo_id_sym = :ruc
64
+ else
65
+ @tipo_id = "Cédula Persona natural"
66
+ @tipo_id_sym = :cedula
67
+ end
68
+ validate_last_digits_for_persona_natural and evaluate_sums_for_persona_natural!
69
+ elsif @third_digit == 6
70
+ @tipo_id = "Sociedad pública"
71
+ @tipo_id_sym = :sociedad_publica
72
+ validate_last_digits_for_sociedad_publica and evaluate_sums_for_sociedad_publica!
73
+ elsif @third_digit == 9
74
+ @tipo_id = "Sociedad privada o extranjera"
75
+ @tipo_id_sym = :sociedad_privada
76
+ validate_last_digits_for_sociedad_privada and evaluate_sums_for_sociedad_privada!
77
+ end
78
+ return true
79
+ end
80
+ def validate_last_digits_for_persona_natural
81
+ if @id.length > 10 and @id.slice(10,3) != "001"
82
+ @errors << "RUC de persona natural debe terminar en 001"
83
+ false
84
+ else
85
+ true
86
+ end
87
+ end
88
+ def validate_last_digits_for_sociedad_publica
89
+ if @id.slice(9,4) != "0001"
90
+ @errors << "RUC de empresa de sector público debe terminar en 0001"
91
+ false
92
+ else
93
+ true
94
+ end
95
+ end
96
+ def validate_last_digits_for_sociedad_privada
97
+ if @id.slice(10,3) != "001"
98
+ @errors << "RUC de entidad privada o extranjera debe terminar en 001"
99
+ false
100
+ else
101
+ true
102
+ end
103
+ end
104
+ def evaluate_sums_for_persona_natural!
105
+ @modulus = 10
106
+ @verifier = @id.slice(9,1).to_i
107
+ p = 2
108
+ @id.slice(0,9).chars do |c|
109
+ product = c.to_i * p
110
+ if product >= 10 then product -= 9 end
111
+ @products << product
112
+ p = if p == 2 then 1 else 2 end
113
+ end
114
+ do_sums!
115
+ self
116
+ end
117
+ def evaluate_sums_for_sociedad_publica!
118
+ @modulus = 11
119
+ @verifier = @id.slice(8,1).to_i
120
+ multipliers = [3, 2, 7, 6, 5, 4, 3, 2]
121
+ (0..7).each do |i|
122
+ @products[i] = @id[i].to_i * multipliers[i]
123
+ end
124
+ @products[8] = 0
125
+ do_sums!
126
+ self
127
+ end
128
+ def evaluate_sums_for_sociedad_privada!
129
+ @modulus = 11
130
+ @verifier = @id.slice(9,1).to_i
131
+ multipliers = [4, 3, 2, 7, 6, 5, 4, 3, 2]
132
+ (0..8).each do |i|
133
+ @products[i] = @id[i].to_i * multipliers[i]
134
+ end
135
+ do_sums!
136
+ self
137
+ end
138
+ def do_sums!
139
+ sum = 0
140
+ @products.each do |product|
141
+ sum += product
142
+ end
143
+ res = sum % @modulus
144
+ digit = if res == 0 then 0 else @modulus - res end
145
+ unless digit == @verifier
146
+ @errors << "ID inválida"
147
+ end
148
+ self
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+
3
+ module IdEcuador
4
+ module ModelAdditions
5
+ def validates_id(attribute, options={})
6
+ # options for only: [:cedula, :ruc, :sociedad_publica, :sociedad_privada]
7
+ defaults = {
8
+ allow_blank: true,
9
+ message: nil,
10
+ only: []
11
+ }
12
+ options = defaults.merge options
13
+
14
+ # to array if not:
15
+ unless options[:only].class == Array
16
+ options[:only] = [options[:only]]
17
+ end
18
+ # poner métodos:
19
+
20
+ # getter del atributo que siempre retorna una instancia de IdEcuador::Id y se encarga de hacer cache basado en el valor del atributo
21
+ class_eval <<-EVAL
22
+ def #{attribute}_id_validator
23
+ if not @id_ecuador_validator or (send(:#{attribute}) != @id_ecuador_validator_last_id)
24
+ @id_ecuador_validator = IdEcuador::Id.new(send(:#{attribute}))
25
+ @id_ecuador_validator_last_id = send(:#{attribute})
26
+ end
27
+ @id_ecuador_validator
28
+ end
29
+ EVAL
30
+
31
+ # extensiones para .tipo_id y .codigo_provincia
32
+ class_eval <<-EVAL
33
+ def #{attribute}_tipo_id
34
+ #{attribute}_id_validator.tipo_id
35
+ end
36
+ def #{attribute}_codigo_provincia
37
+ #{attribute}_id_validator.codigo_provincia
38
+ end
39
+ EVAL
40
+
41
+ validate do
42
+ if not options[:allow_blank] and send(:"#{attribute}").blank?
43
+ errors.add attribute.to_sym, (options[:message] or "No puede quedar en blanco")
44
+ else
45
+ # normal validations:
46
+ if not send(:"#{attribute}").blank? and not send(:"#{attribute}_id_validator").valid?
47
+ if options[:message]
48
+ errors.add attribute.to_sym, options[:message]
49
+ else
50
+ send(:"#{attribute}_id_validator").errors.each do |error|
51
+ errors.add attribute.to_sym, error
52
+ end
53
+ end
54
+ end
55
+ # for options:
56
+ unless options[:only].empty?
57
+ unless options[:only].include?(send(:"#{attribute}_id_validator").tipo_id_sym)
58
+ errors.add attribute.to_sym, (options[:message] or "Tipo de identificación no permitido")
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,9 @@
1
+ module IdEcuador
2
+ class Railtie < Rails::Railtie
3
+ intializer 'id_ecuador.model_additions' do
4
+ ActiveSupport.on_load :active_record do
5
+ extend ModelAdditions
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module IdEcuador
2
+ VERSION = "0.0.1.alpha"
3
+ end
@@ -0,0 +1,111 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+
4
+ describe IdEcuador::Id do
5
+
6
+ describe "interfaz de la clase" do
7
+ it "debe llamar automáticamente al método validate!" do
8
+ id = IdEcuador::Id.new("1104680135")
9
+ id.send(:already_validated).should be_true
10
+ end
11
+ it "no debe llamar automáticamente al método validate!" do
12
+ IdEcuador::Id.any_instance.stub(:validate!)
13
+ id = IdEcuador::Id.new("1104680135", validate: false)
14
+ id.send(:already_validated).should be_false
15
+ end
16
+ end
17
+
18
+ describe "funcionalidad de la clase" do
19
+ describe "longitud" do
20
+ # longitud debería ser 10 para cédulas y 13 para RUC
21
+ before :each do
22
+ @error = "Longitud incorrecta"
23
+ end
24
+
25
+ it "debería fallar con longitud menor a 10 caracteres" do
26
+ id = IdEcuador::Id.new "11"
27
+ id.errors.should include(@error)
28
+ end
29
+ it "no debería incluir problemas de longitud con 10 caracteres" do
30
+ id = IdEcuador::Id.new "1104680135"
31
+ id.errors.should_not include(@error)
32
+ end
33
+ it "no debería incluir problemas de longitud con 13 caracteres" do
34
+ id = IdEcuador::Id.new "1104680135001"
35
+ id.errors.should_not include(@error)
36
+ end
37
+ it "debería fallar con longitud mayor a 13 caracteres" do
38
+ id = IdEcuador::Id.new "12345678910111213"
39
+ id.errors.should include(@error)
40
+ end
41
+ end
42
+
43
+ describe "código de provincia" do
44
+ # Hay 22 provincias. Los dos primeros dígitos son el código de la provincia. Debe ser mayor a 0 y menor a 22
45
+ it "debería fallar con código de provincia 23" do
46
+ id = IdEcuador::Id.new "2304680135"
47
+ id.errors.should include("Código de provincia incorrecto")
48
+ end
49
+ it "debería decir que el código de la provincia es 11" do
50
+ id = IdEcuador::Id.new "1104680135"
51
+ id.codigo_provincia.should eq(11)
52
+ end
53
+ end
54
+
55
+ describe "tercer dígito" do
56
+ # el tercer dígito no puede ser el número 7 ni 8
57
+ before :each do
58
+ @error = "Tercer dígito es inválido"
59
+ end
60
+
61
+ it "debería fallar con tercer dígito 7" do
62
+ id = IdEcuador::Id.new "1174680135"
63
+ id.errors.should include(@error)
64
+ end
65
+ it "debería fallar con tercer dígito 8" do
66
+ id = IdEcuador::Id.new "1184680135"
67
+ id.errors.should include(@error)
68
+ end
69
+ end
70
+
71
+ describe "tipo de identificación" do
72
+ # con tercer dígito:
73
+ # 9 -> sociedades privadas o extranjeras
74
+ # 6 -> sociedades públicas
75
+ # 0..5 -> personas naturales
76
+ it "debería decir que es una persona natural" do
77
+ id = IdEcuador::Id.new "1104680135"
78
+ id.tipo_id.should eq("Cédula Persona natural")
79
+ end
80
+ it "debería decir que es el RUC de una persona natural" do
81
+ id = IdEcuador::Id.new "1104680135001"
82
+ id.tipo_id.should eq("RUC Persona natural")
83
+ end
84
+ it "debería decir que es una sociedad pública" do
85
+ id = IdEcuador::Id.new "1164680130001"
86
+ id.tipo_id.should eq("Sociedad pública")
87
+ end
88
+ it "debería decir que es una sociedad privada o extranjera" do
89
+ id = IdEcuador::Id.new "1194680135001"
90
+ id.tipo_id.should eq("Sociedad privada o extranjera")
91
+ end
92
+ end
93
+
94
+ describe "probar con algunas cédulas" do
95
+ it "debería decir que esta cédula es válida" do
96
+ IdEcuador::Id.new("1104680135").valid?.should be_true
97
+ end
98
+ it "debería decir que esta cédula es inválida" do
99
+ IdEcuador::Id.new("1104680134").valid?.should be_false
100
+ end
101
+ it "debería decir que estas cédulas son válidas" do
102
+ ["1104077209",
103
+ "1102077425",
104
+ "1102019351",
105
+ "1102778014"].each do |cedula|
106
+ IdEcuador::Id.new(cedula).valid?.should be_true
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,132 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+
4
+ # tests with Rails' models
5
+
6
+ describe IdEcuador::ModelAdditions do
7
+
8
+ describe "with no options" do
9
+ class User < SuperModel::Base
10
+ extend IdEcuador::ModelAdditions
11
+ validates_id :identificacion
12
+ end
13
+
14
+ it "no debería levantar un error si la identificacion del usuario no está puesta" do
15
+ user = User.new identificacion: nil
16
+ user.save.should be_true
17
+ end
18
+
19
+ describe "valida el ID de un usuario antes de guardarlo a la base de datos" do
20
+ it "debería decir que es válido" do
21
+ User.new(identificacion: "1104680135").valid?.should be_true
22
+ end
23
+ it "debería decir que es inválido" do
24
+ user = User.new(identificacion: "1104680134")
25
+ user.save.should be_false
26
+ user.errors[:identificacion].should include("ID inválida")
27
+ end
28
+ it "debería decir que la longitud es inválida" do
29
+ user = User.new(identificacion: "12345")
30
+ user.save.should be_false
31
+ user.errors[:identificacion].should include("Longitud incorrecta")
32
+ end
33
+
34
+ describe "expirar el cache de la variable @id_ecuador_validator_last_id" do
35
+ it "debería decir que la cédula es válida y, al cambiarla, decir que es inválida" do
36
+ user = User.new
37
+ user.identificacion = "1104680135"
38
+ user.valid?.should be_true
39
+ user.identificacion = "1104680134"
40
+ user.valid?.should be_false
41
+ end
42
+ it "debería decir que la cédula es inválida y, al cambiarla, decir que es válida" do
43
+ user = User.new
44
+ user.identificacion = "1104680134"
45
+ user.valid?.should be_false
46
+ user.identificacion = "1104680135"
47
+ user.valid?.should be_true
48
+ end
49
+ end
50
+
51
+ end
52
+
53
+ describe "debe agregar métodos al atributo" do
54
+ it "debe agregar método `identificacion_tipo_id`" do
55
+ user = User.new(identificacion: "1104680135")
56
+ user.respond_to?(:identificacion_tipo_id).should be_true
57
+ user.identificacion_tipo_id.should eq("Cédula Persona natural")
58
+ end
59
+ it "debe agregar método `identificacion_codigo_provincia`" do
60
+ user = User.new(identificacion: "1104680135")
61
+ user.respond_to?(:identificacion_codigo_provincia).should be_true
62
+ user.identificacion_codigo_provincia.should eq(11)
63
+ end
64
+ end
65
+ end
66
+
67
+ describe "with options" do
68
+ describe "don't allow_blank" do
69
+ class UserWithOptionsAllowBlank < SuperModel::Base
70
+ extend IdEcuador::ModelAdditions
71
+ validates_id :identificacion, allow_blank: false
72
+ end
73
+
74
+ it "should say record is invalid as identificacion is blank" do
75
+ user = UserWithOptionsAllowBlank.new identificacion: nil
76
+ user.valid?.should be_false
77
+ user.errors[:identificacion].should include("No puede quedar en blanco")
78
+ end
79
+ end
80
+ describe "specify message" do
81
+ class UserWithOptionsMessage < SuperModel::Base
82
+ extend IdEcuador::ModelAdditions
83
+ validates_id :identificacion, allow_blank: false, message: "Not valid!"
84
+ end
85
+
86
+ it "debería mostrar 'Not valid!' como error con identificacion nil" do
87
+ user = UserWithOptionsMessage.new identificacion: nil
88
+ user.valid?.should be_false
89
+ user.errors[:identificacion].should eq(["Not valid!"])
90
+ end
91
+ it "debería mostrar 'Not valid!' como error con cédula" do
92
+ user = UserWithOptionsMessage.new identificacion: "1104680134"
93
+ user.valid?.should be_false
94
+ user.errors[:identificacion].should eq(["Not valid!"])
95
+ end
96
+ end
97
+ describe "specify only options" do
98
+ describe "con cédula" do
99
+ class UserWithOptionsOnlyCedula < SuperModel::Base
100
+ extend IdEcuador::ModelAdditions
101
+ validates_id :identificacion, only: :cedula
102
+ end
103
+
104
+ it "debería decir que es válido" do
105
+ user = UserWithOptionsOnlyCedula.new identificacion: "1104680135"
106
+ user.valid?.should be_true
107
+ end
108
+ it "debería decir que es inválido" do
109
+ user = UserWithOptionsOnlyCedula.new identificacion: "1104680135001"
110
+ user.valid?.should be_false
111
+ user.errors[:identificacion].should include("Tipo de identificación no permitido")
112
+ end
113
+ end
114
+ describe "con RUC" do
115
+ class UserWithOptionsOnlyRUC < SuperModel::Base
116
+ extend IdEcuador::ModelAdditions
117
+ validates_id :identificacion, only: :ruc
118
+ end
119
+ it "debería decir que es válido" do
120
+ user = UserWithOptionsOnlyRUC.new identificacion: "1104680135001"
121
+ user.valid?.should be_true
122
+ end
123
+ it "debería decir que es inválido" do
124
+ user = UserWithOptionsOnlyRUC.new identificacion: "1104680135"
125
+ user.valid?.should be_false
126
+ user.errors[:identificacion].should include("Tipo de identificación no permitido")
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+
4
+ describe IdEcuador do
5
+
6
+ end
@@ -0,0 +1,3 @@
1
+ # encoding: utf-8
2
+ require "id_ecuador"
3
+ require "supermodel"
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: id_ecuador
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.alpha
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Mario Andrés Correa
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: supermodel
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Validate Ecuador's CI and RUC
79
+ email:
80
+ - a@macool.me
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .rspec
86
+ - .travis.yml
87
+ - Gemfile
88
+ - LICENSE.txt
89
+ - README.md
90
+ - Rakefile
91
+ - id_ecuador.gemspec
92
+ - lib/id_ecuador.rb
93
+ - lib/id_ecuador/id.rb
94
+ - lib/id_ecuador/model_additions.rb
95
+ - lib/id_ecuador/railtie.rb
96
+ - lib/id_ecuador/version.rb
97
+ - spec/id_ecuador/id_spec.rb
98
+ - spec/id_ecuador/model_additions_spec.rb
99
+ - spec/id_ecuador_spec.rb
100
+ - spec/spec_helper.rb
101
+ homepage: ''
102
+ licenses:
103
+ - MIT
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>'
118
+ - !ruby/object:Gem::Version
119
+ version: 1.3.1
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 1.8.24
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Gem to validate Ecuador's CI and RUC
126
+ test_files:
127
+ - spec/id_ecuador/id_spec.rb
128
+ - spec/id_ecuador/model_additions_spec.rb
129
+ - spec/id_ecuador_spec.rb
130
+ - spec/spec_helper.rb
131
+ has_rdoc: