identificamex 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65fa3e6fd8638d2aa972815f35ed94ba3df0424b
4
- data.tar.gz: 71497ea86147ae06abeaf84624dc081557771612
3
+ metadata.gz: 4635e390048785c33082dd5a59d948e44c313130
4
+ data.tar.gz: 708be8ef993125a8e73a00fc7c4d642d8f0550f7
5
5
  SHA512:
6
- metadata.gz: 56f512d4a89955f1b52e70a561f54463815a705e257fd60401a2f91515fdb5a03ce71426c3a23bcfc5133b8f88cb9a41c28b561a5f14f9f170b3c32759dd9088
7
- data.tar.gz: c9896b42a2261fd5bd3bfc3ed4a1913fe8f2fe91807ebe2227de77c59246995d026551d27aef551afc3ade2c9f324e1e9d702ba8de3e296e91a1691e7b846abf
6
+ metadata.gz: bf93e16569ecc8cbf783dae290cecd170229fb4eafb9d5be42c7b046a7ae1ae40fb7e04894351e11e7dcb5b7ca557f575554a51054d8a8dc3040471643a9e5cc
7
+ data.tar.gz: b208aa3fe2a00a452d1d4a628b9c7e4c0839426b4dd7c71b396567af9eb78c583c931e2cf4b51701e11b10320e0d9a2054d9a92464a0a330ae58fa31056770ec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.1.5
data/README.md CHANGED
@@ -26,6 +26,8 @@ O instálala por ti mismo de esta manera:
26
26
 
27
27
  ## Uso
28
28
 
29
+ ### Formato
30
+
29
31
  Agrega las validaciones de formato a los campos correspondientes.
30
32
 
31
33
  ```ruby
@@ -53,9 +55,11 @@ class Employee < ActiveRecord::Base
53
55
  primer_apellido: 'Barrios',
54
56
  segundo_apellido: 'Fernández',
55
57
  fecha_nacimiento: Date.new(1970, 12, 13)
58
+ # => true
56
59
 
57
60
  valid_rfc? 'APB830305QS6', razon_social: 'U.S. Ruber Mexicana, S.A.',
58
61
  fecha_creacion: Date.new(1983, 03, 05)
62
+ # => false
59
63
  end
60
64
  end
61
65
  ```
@@ -69,7 +73,7 @@ posteriormente, al igual que la generación de la CURP_
69
73
  El método `valid_rfc?` es auxiliar y ha funcionado con los casos que he
70
74
  probado, pero no hay garantía que funcione en todos los casos, así que debe
71
75
  usarse con precaución. Si detectas algún caso en el que no funciona, agrega
72
- un _issue_ para corregirlo.
76
+ un _issue_ para tratar de corregirlo.
73
77
 
74
78
  ## Contribución
75
79
 
@@ -4,22 +4,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'identificamex/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "identificamex"
7
+ spec.name = 'identificamex'
8
8
  spec.version = Identificamex::VERSION
9
- spec.authors = ["Azarel Doroteo Pacheco"]
10
- spec.email = ["azarel.doroteo@logicalbricks.com"]
9
+ spec.authors = ['Azarel Doroteo Pacheco']
10
+ spec.email = ['azarel.doroteo@logicalbricks.com']
11
11
  spec.description = %q{Validadores para los formatos de CURP y RFC}
12
12
  spec.summary = %q{Validadores sencillos para los formatos de la Clave Única de Registro de Población (CURP) y el Registro Federal de Contribuyentes (RFC) utilizados en México}
13
- spec.homepage = "https://github.com/LogicalBricks/identificamex"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/LogicalBricks/identificamex'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
21
+ spec.add_development_dependency 'bundler', '~> 1.7'
22
+ spec.add_development_dependency 'rake'
23
23
 
24
24
  spec.add_dependency 'activemodel'
25
25
  end
@@ -1,8 +1,8 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  class CurpFormatValidator < ActiveModel::EachValidator
3
3
  def validate_each(object, attribute, value)
4
- unless value =~ /\A[A-Z][AEIOUX][A-Z]{2}[0-9]{2}[0-1][0-9][0-3][0-9][MH][A-Z][BCDFGHJKLMNÑPQRSTVWXYZ]{4}[0-9A-Z][0-9]\z/i
5
- object.errors[attribute] << (options[:message] || "no es una CURP válida")
4
+ unless value =~ /\A[A-Z][AEIOUX][A-Z]{2}[0-9]{2}[0-1][0-9][0-3][0-9][MH][A-Z][A-Z][BCDFGHJKLMNÑPQRSTVWXYZ]{3}[0-9A-Z][0-9]\z/i
5
+ object.errors[attribute] << (options[:message] || "no es una CURP válida")
6
6
  end
7
7
  end
8
8
  end
@@ -1,9 +1,9 @@
1
- require_relative 'normalizador_cadena'
1
+ require_relative 'normalizador_nombre'
2
2
 
3
3
  module Identificamex
4
4
  module Nombre
5
5
 
6
- # Clase que hereda de `NormalizadorCadena` y define los nombres a ignorar
6
+ # Clase que hereda de `NormalizadorNombre` y define los nombres a ignorar
7
7
  # como `%w[DE LA DEL LOS]` que son los únicos que se ignoran para los
8
8
  # apellidos.
9
9
  #
@@ -17,7 +17,7 @@ module Identificamex
17
17
  #
18
18
  # NormalizadorApellido.new('Pérez').normalizar
19
19
  # # => PEREZ
20
- class NormalizadorApellido < NormalizadorCadena
20
+ class NormalizadorApellido < NormalizadorNombre
21
21
 
22
22
  private
23
23
 
@@ -1,11 +1,14 @@
1
- require_relative 'normalizador_cadena'
1
+ require_relative 'mayusculas'
2
2
 
3
3
  module Identificamex
4
4
  module Nombre
5
5
 
6
- # Clase que hereda de `NormalizadorCadena` y define los nombres a ignorar
7
- # como `%w[JOSE MARIA DE LA DEL LOS]` que son los que se ignoran para los
8
- # nombres.
6
+ # Clase base para normalizar las cadenas de nombres y apellidos. La clase
7
+ # se encarga de convertir a mayúsculas las cadenas y recorre los nombres
8
+ # para descartar los nombres ignorados.
9
+ #
10
+ # Los nombres ignorados deben ser provistos por las clases que hereden.
11
+ # Para nombres, se ignoran los siguientes: `%w[JOSE MARIA DE LA DEL LOS]`.
9
12
  #
10
13
  # Ejemplo:
11
14
  #
@@ -29,14 +32,36 @@ module Identificamex
29
32
  #
30
33
  # NormalizadorNombre.new('José').normalizar
31
34
  # # => JOSE
32
- class NormalizadorNombre < NormalizadorCadena
35
+ class NormalizadorNombre
36
+
37
+ include Mayusculas
38
+
39
+ def initialize(nombre)
40
+ @nombre = mayusculas(nombre)
41
+ end
42
+
43
+ def normalizar
44
+ nombre_aceptado || primer_nombre
45
+ end
33
46
 
34
47
  private
35
48
 
49
+ def nombre_aceptado
50
+ (nombres - nombres_ignorados).first
51
+ end
52
+
53
+ def primer_nombre
54
+ nombres.first
55
+ end
56
+
36
57
  def nombres_ignorados
37
58
  %w[JOSE MARIA DE LA DEL LOS]
38
59
  end
39
60
 
61
+ def nombres
62
+ @nombres ||= @nombre.split
63
+ end
64
+
40
65
  end
41
66
  end
42
67
  end
@@ -44,21 +44,16 @@ module Identificamex
44
44
 
45
45
  def siglas_palabra_unica
46
46
  letras = palabras_a_considerar.first[0, 3]
47
- letras = letras + ("X" * (3 - letras.length)) if letras.length < 3
47
+ letras += "X" * (3 - letras.length) if letras.length < 3
48
48
  letras
49
49
  end
50
50
 
51
51
  def palabras_razon_social
52
- @razon_social
53
- .split
54
- .select{|p| !palabras_especiales.member?(p) }
52
+ @razon_social.split - palabras_especiales
55
53
  end
56
54
 
57
55
  def eliminar_abreviaturas(str)
58
- abreviaturas.each do |a|
59
- str = str.gsub(a, '')
60
- end
61
- str.strip
56
+ abreviaturas.inject(str) { |str, a| str.gsub(a, '') }.strip
62
57
  end
63
58
 
64
59
  def palabras_especiales
@@ -1,3 +1,3 @@
1
1
  module Identificamex
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -19,6 +19,14 @@ describe 'curp validator' do
19
19
  it 'accepts curp (digito anti-duplicado alfanumérico)' do
20
20
  model(curp: 'AAAA111111HDFBBBA1').must_be :valid?
21
21
  end
22
+
23
+ it 'accepts generic curp (for man)' do
24
+ model(curp: 'XEXX010101MNEXXXA8').must_be :valid?
25
+ end
26
+
27
+ it 'accepts generic curp (for woman)' do
28
+ model(curp: 'XEXX010101HNEXXXA4').must_be :valid?
29
+ end
22
30
  end # with valid data
23
31
 
24
32
  describe 'with invalid data' do
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: identificamex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Azarel Doroteo Pacheco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-11 00:00:00.000000000 Z
11
+ date: 2015-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activemodel
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: Validadores para los formatos de CURP y RFC
@@ -59,9 +59,9 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .ruby-version
64
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".ruby-version"
64
+ - ".travis.yml"
65
65
  - Gemfile
66
66
  - LICENSE.txt
67
67
  - README.md
@@ -72,7 +72,6 @@ files:
72
72
  - lib/identificamex/nombre/mayusculas.rb
73
73
  - lib/identificamex/nombre/nombre_completo.rb
74
74
  - lib/identificamex/nombre/normalizador_apellido.rb
75
- - lib/identificamex/nombre/normalizador_cadena.rb
76
75
  - lib/identificamex/nombre/normalizador_nombre.rb
77
76
  - lib/identificamex/nombre/palabra_inconveniente.rb
78
77
  - lib/identificamex/nombre/razon_social.rb
@@ -103,17 +102,17 @@ require_paths:
103
102
  - lib
104
103
  required_ruby_version: !ruby/object:Gem::Requirement
105
104
  requirements:
106
- - - '>='
105
+ - - ">="
107
106
  - !ruby/object:Gem::Version
108
107
  version: '0'
109
108
  required_rubygems_version: !ruby/object:Gem::Requirement
110
109
  requirements:
111
- - - '>='
110
+ - - ">="
112
111
  - !ruby/object:Gem::Version
113
112
  version: '0'
114
113
  requirements: []
115
114
  rubyforge_project:
116
- rubygems_version: 2.0.6
115
+ rubygems_version: 2.4.5
117
116
  signing_key:
118
117
  specification_version: 4
119
118
  summary: Validadores sencillos para los formatos de la Clave Única de Registro de
@@ -1,47 +0,0 @@
1
- require_relative 'mayusculas'
2
-
3
- module Identificamex
4
- module Nombre
5
-
6
- # Clase base para normalizar las cadenas de nombres y apellidos. La clase
7
- # se encarga de convertir a mayúsculas las cadenas y recorre los nombres para
8
- # descartar los nombres ignorados.
9
- #
10
- # Los nombres ignorados deben ser provistos por las clases que hereden.
11
- class NormalizadorCadena
12
-
13
- include Mayusculas
14
-
15
- def initialize(nombre)
16
- @nombre = mayusculas(nombre)
17
- end
18
-
19
- def normalizar
20
- nombre_aceptado || primer_nombre
21
- end
22
-
23
- private
24
-
25
- def nombre_aceptado
26
- nombres.find{|nombre| no_ignorado?(nombre) } if nombres.count > 1
27
- end
28
-
29
- def no_ignorado?(nombre)
30
- !nombres_ignorados.member?(nombre)
31
- end
32
-
33
- def primer_nombre
34
- nombres.first
35
- end
36
-
37
- def nombres_ignorados
38
- raise NotImplementedError
39
- end
40
-
41
- def nombres
42
- @nombres ||= @nombre.split
43
- end
44
-
45
- end
46
- end
47
- end