portuguese_validators 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/README.md +9 -10
- data/lib/portuguese_validators/{bi_validator.rb → bi.rb} +13 -8
- data/lib/portuguese_validators/{nib_validator.rb → nib.rb} +5 -3
- data/lib/portuguese_validators/{nif_validator.rb → nif.rb} +5 -5
- data/lib/portuguese_validators/phone.rb +37 -0
- data/lib/portuguese_validators/version.rb +1 -1
- data/lib/portuguese_validators.rb +13 -3
- data/portuguese_validators.gemspec +6 -2
- data/spec/bi_validator_spec.rb +45 -0
- data/spec/nib_validator_spec.rb +37 -0
- data/spec/nif_validator_spec.rb +21 -0
- data/spec/spec_helper.rb +23 -0
- metadata +65 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dda9a0ba1218650749627b149ac72a33a2db99a6
|
|
4
|
+
data.tar.gz: cddc577ffa4606e7298f2b770082559ca77ca8c6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3741c81cce9cba804019218667329a609694220e37ef51731975eb01a8e2bbe5c4da775acbd225444c8e624803410c0d3f914ad1f77f007b55fed9452555d3f4
|
|
7
|
+
data.tar.gz: 40da33c44934c9a0cf6c8eaaa218d86c6ab69c04ec12f2a7e21e53eeac5abf808071ce965f6b5710925210ca08f1b77fccdd9d31f5e461911c7f328765a6ad74
|
data/.rspec
ADDED
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
portuguese_validators
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.0.0
|
data/.travis.yml
ADDED
data/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
[](https://travis-ci.org/rikas/portuguese_validators) [](https://gemnasium.com/rikas/portuguese_validators)
|
|
2
|
+
|
|
1
3
|
# PortugueseValidators
|
|
2
4
|
|
|
3
|
-
This is a simple gem to validate NIB, NIF and
|
|
5
|
+
This is a simple gem to validate NIB, NIF, BI and phone numbers.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
@@ -24,15 +26,14 @@ $ gem install portuguese_validators
|
|
|
24
26
|
|
|
25
27
|
## Usage
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
Just add the custom validators to your models and you're ready to go!
|
|
28
30
|
|
|
29
31
|
```ruby
|
|
30
32
|
class MyModel < ActiveRecord::Base
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
validates :
|
|
34
|
-
validates :
|
|
35
|
-
validates :bi_field, bi: true
|
|
33
|
+
validates :nif, portuguese_nif: true
|
|
34
|
+
validates :nib, portuguese_nib: true
|
|
35
|
+
validates :bi, portuguese_bi: true
|
|
36
|
+
validates :phone, portuguese_phone: true
|
|
36
37
|
end
|
|
37
38
|
```
|
|
38
39
|
|
|
@@ -40,9 +41,7 @@ Note that these validators are just like the ones that Rails provide you so you
|
|
|
40
41
|
|
|
41
42
|
```ruby
|
|
42
43
|
class MyModel < ActiveRecord::Base
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
validates :bi_field, bi: { message: 'é um número errado' }, if: :user_pt?
|
|
44
|
+
validates :bi, portuguese_bi: { message: 'é inválido' }, if: :user_pt?
|
|
46
45
|
end
|
|
47
46
|
```
|
|
48
47
|
|
|
@@ -4,26 +4,30 @@ module PortugueseValidators
|
|
|
4
4
|
# A Portuguese BI number is comprised by eight digits. Between that number and the "issue" box,
|
|
5
5
|
# the card also has a small box with a single digit. That's the control digit. In order to
|
|
6
6
|
# validate a Portuguese BI you have to give the full number (including the control digit).
|
|
7
|
-
class
|
|
8
|
-
|
|
7
|
+
class PortugueseBiValidator < ActiveModel::EachValidator
|
|
8
|
+
BLACKLIST = %w(000000000)
|
|
9
|
+
|
|
10
|
+
def validate_each(record, attribute, value) # :nodoc:
|
|
9
11
|
unless is_valid?(value)
|
|
10
12
|
record.errors[attribute] << (options[:message] || 'is not a valid BI')
|
|
11
13
|
end
|
|
12
14
|
end
|
|
13
15
|
|
|
16
|
+
# Returns true if the number is a valid BI or false otherwise.
|
|
14
17
|
def is_valid?(number)
|
|
15
|
-
|
|
18
|
+
return false unless number
|
|
19
|
+
|
|
20
|
+
number = number.to_s
|
|
21
|
+
looks_like_bi?(number) && valid_bi?(number)
|
|
16
22
|
end
|
|
17
23
|
|
|
18
24
|
private
|
|
19
25
|
|
|
20
|
-
def
|
|
26
|
+
def valid_bi?(number)
|
|
21
27
|
control = number.split('').map { |digit| digit.to_i }
|
|
22
28
|
|
|
23
29
|
sum = 0
|
|
24
|
-
9.downto(2)
|
|
25
|
-
sum += num * control.shift
|
|
26
|
-
end
|
|
30
|
+
9.downto(2) { |num| sum += num * control.shift }
|
|
27
31
|
|
|
28
32
|
expected = 11 - sum % 11;
|
|
29
33
|
expected = 0 if expected > 9 # when the value is greater than 9 then we assume 0
|
|
@@ -32,7 +36,8 @@ module PortugueseValidators
|
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
def looks_like_bi?(number)
|
|
35
|
-
return false
|
|
39
|
+
return false if !number || BLACKLIST.include?(number)
|
|
40
|
+
|
|
36
41
|
number.match(/^\d{9}$/) ? true : false
|
|
37
42
|
end
|
|
38
43
|
end
|
|
@@ -2,7 +2,7 @@ module PortugueseValidators
|
|
|
2
2
|
# Validates Portuguese bank numbers (NIB).
|
|
3
3
|
#
|
|
4
4
|
# The number is always composed by 21 where the last two form the control number.
|
|
5
|
-
class
|
|
5
|
+
class PortugueseNibValidator < ActiveModel::EachValidator
|
|
6
6
|
def validate_each(record, attribute, value)
|
|
7
7
|
unless is_valid?(value)
|
|
8
8
|
record.errors[attribute] << (options[:message] || 'is not a valid NIB')
|
|
@@ -10,13 +10,15 @@ module PortugueseValidators
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def is_valid?(number)
|
|
13
|
+
return false unless number
|
|
14
|
+
|
|
13
15
|
number = sprintf("%021o", number) if number.kind_of?(Integer)
|
|
14
|
-
looks_like_nib?(number) &&
|
|
16
|
+
looks_like_nib?(number) && valid_nib?(number)
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
private
|
|
18
20
|
|
|
19
|
-
def
|
|
21
|
+
def valid_nib?(number)
|
|
20
22
|
nib = number.slice(0..18).split('').map { |digit| digit.to_i }
|
|
21
23
|
control = number.slice(19..20).to_i
|
|
22
24
|
|
|
@@ -3,7 +3,7 @@ module PortugueseValidators
|
|
|
3
3
|
#
|
|
4
4
|
# The portuguese NIF is composed by 9 digits and it must start with 1, 2, 5, 6, 7, 8 or 9. The
|
|
5
5
|
# last digit is the control digit.
|
|
6
|
-
class
|
|
6
|
+
class PortugueseNifValidator < ActiveModel::EachValidator
|
|
7
7
|
def validate_each(record, attribute, value)
|
|
8
8
|
unless is_valid?(value)
|
|
9
9
|
record.errors[attribute] << (options[:message] || 'is not a valid NIF')
|
|
@@ -11,13 +11,15 @@ module PortugueseValidators
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def is_valid?(number)
|
|
14
|
+
return false unless number
|
|
15
|
+
|
|
14
16
|
nif = number.to_s
|
|
15
|
-
looks_like_nif?(nif) &&
|
|
17
|
+
looks_like_nif?(nif) && valid_nif?(nif)
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
private
|
|
19
21
|
|
|
20
|
-
def
|
|
22
|
+
def valid_nif?(number)
|
|
21
23
|
control = number.split('').map { |digit| digit.to_i }
|
|
22
24
|
|
|
23
25
|
sum = 0
|
|
@@ -31,8 +33,6 @@ module PortugueseValidators
|
|
|
31
33
|
expected == control.last
|
|
32
34
|
end
|
|
33
35
|
|
|
34
|
-
# Checks if at least the given number has the correct number of digits and starts with a valid
|
|
35
|
-
# digit.
|
|
36
36
|
def looks_like_nif?(number)
|
|
37
37
|
return false unless number
|
|
38
38
|
number.match(/^\d{9}$/) && number.match(/^[1256789]/) ? true : false
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module PortugueseValidators
|
|
2
|
+
# Validates Portuguese Phone numbers.
|
|
3
|
+
#
|
|
4
|
+
# The portuguese phone numbers can start by 00351 or +351 and are composed by 9 digits.
|
|
5
|
+
# The number must start with one of the values in VALID_PREFIXES
|
|
6
|
+
class PortuguesePhoneValidator < ActiveModel::EachValidator
|
|
7
|
+
VALID_PREFIXES = %w(91 92 93 96 21 226 231 232 233 234 235 236 238 239 241 242 243 244 245 249
|
|
8
|
+
251 252 253 254 255 256 258 259 261 262 263 265 266 268 269 271 272 273 274 275 276 277 278
|
|
9
|
+
279 281 281 282 283 284 285 286 289 291 292 295 296)
|
|
10
|
+
|
|
11
|
+
COUNTRY_PREFIXES = %w(00351 +351)
|
|
12
|
+
|
|
13
|
+
def validate_each(record, attribute, value)
|
|
14
|
+
return if value.blank?
|
|
15
|
+
|
|
16
|
+
number = value.gsub(" ", "")
|
|
17
|
+
record.errors.add(attribute, options[:message] || :invalid) unless is_valid?(number)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def is_valid?(number)
|
|
21
|
+
looks_like_phone_number?(number.to_s) && valid_phone_number?(number.to_s)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def valid_phone_number?(number)
|
|
27
|
+
COUNTRY_PREFIXES.each { |pref| number.gsub!(pref, '') if number.start_with?(pref) }
|
|
28
|
+
VALID_PREFIXES.each { |pref| return true if number.start_with?(pref) }
|
|
29
|
+
false
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def looks_like_phone_number?(number)
|
|
33
|
+
number.match(/^((00|\+)(\d{3}))?\d{9}$/) ? true : false
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
require 'active_model/validator'
|
|
2
2
|
|
|
3
|
+
require 'portuguese_validators/bi'
|
|
4
|
+
require 'portuguese_validators/nif'
|
|
5
|
+
require 'portuguese_validators/nib'
|
|
6
|
+
require 'portuguese_validators/phone'
|
|
3
7
|
require 'portuguese_validators/version'
|
|
4
|
-
require 'portuguese_validators/nif_validator'
|
|
5
|
-
require 'portuguese_validators/nib_validator'
|
|
6
|
-
require 'portuguese_validators/bi_validator'
|
|
7
8
|
|
|
9
|
+
# PortugueseValidators offer a set of Rails validators that you can use as normal ActiveRecord
|
|
10
|
+
# validators.
|
|
8
11
|
module PortugueseValidators
|
|
9
12
|
end
|
|
13
|
+
|
|
14
|
+
# Open ActiveModel Validations to include PortugueseValidators and avoid the manual inclusion.
|
|
15
|
+
module ActiveModel
|
|
16
|
+
module Validations
|
|
17
|
+
include PortugueseValidators
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
|
|
4
5
|
require 'portuguese_validators/version'
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |spec|
|
|
@@ -8,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
|
8
9
|
spec.version = PortugueseValidators::VERSION
|
|
9
10
|
spec.authors = ['Ricardo Otero']
|
|
10
11
|
spec.email = ['oterosantos@gmail.com']
|
|
11
|
-
spec.summary = 'Validators for portuguese
|
|
12
|
+
spec.summary = 'Validators for portuguese NIB, NIF, BI and phone.'
|
|
12
13
|
spec.description = spec.summary
|
|
13
14
|
spec.homepage = 'http://github.com/rikas/portuguese_validators/fork'
|
|
14
15
|
spec.license = 'MIT'
|
|
@@ -20,6 +21,9 @@ Gem::Specification.new do |spec|
|
|
|
20
21
|
|
|
21
22
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
|
22
23
|
spec.add_development_dependency 'rake'
|
|
24
|
+
spec.add_development_dependency 'rspec'
|
|
25
|
+
spec.add_development_dependency 'reek'
|
|
26
|
+
spec.add_development_dependency 'rubocop'
|
|
23
27
|
|
|
24
|
-
spec.add_dependency 'activemodel'
|
|
28
|
+
spec.add_dependency 'activemodel', '~> 4.1.4'
|
|
25
29
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe PortugueseBiValidator do
|
|
4
|
+
before(:all) {
|
|
5
|
+
class User < TestModel
|
|
6
|
+
validates :bi, portuguese_bi: true
|
|
7
|
+
end
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
after(:all) { Object.send(:remove_const, :User) }
|
|
11
|
+
|
|
12
|
+
describe 'validation' do
|
|
13
|
+
it 'returns false if the number is empty' do
|
|
14
|
+
expect(User.new(bi: '')).to be_invalid
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'returns false if the number is not defined' do
|
|
18
|
+
expect(User.new(bi: nil)).to be_invalid
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context 'given valid BI numbers' do
|
|
22
|
+
%w(117052337 134307607 178756830 101812418).each do |bi|
|
|
23
|
+
it "returns true for `#{bi}'" do
|
|
24
|
+
expect(User.new(bi: bi)).to be_valid
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context 'given blacklisted BI numbers' do
|
|
30
|
+
%w(000000000).each do |bi|
|
|
31
|
+
it "returns false for `#{bi}'" do
|
|
32
|
+
expect(User.new(bi: bi)).to be_invalid
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'given invalid BI numbers' do
|
|
38
|
+
%w(-3 117051343 138473133 7873 kjas 017051349 117051348).each do |bi|
|
|
39
|
+
it "returns false for `#{bi}'" do
|
|
40
|
+
expect(User.new(bi: bi)).to be_invalid
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe PortugueseNibValidator do
|
|
4
|
+
before(:all) {
|
|
5
|
+
class User < TestModel
|
|
6
|
+
validates :nib, portuguese_nib: true
|
|
7
|
+
end
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
after(:all) { Object.send(:remove_const, :User) }
|
|
11
|
+
|
|
12
|
+
describe 'validation' do
|
|
13
|
+
it 'returns false if the number is empty' do
|
|
14
|
+
expect(User.new(nib: '')).to be_invalid
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'returns false if the number is not defined' do
|
|
18
|
+
expect(User.new(nib: nil)).to be_invalid
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context 'given invalid NIB numbers' do
|
|
22
|
+
%w(1 -39 three 0 823792873 004609950003132833098).each do |nib|
|
|
23
|
+
it "returns false for `#{nib}'" do
|
|
24
|
+
expect(User.new(nib: nib)).to be_invalid
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context 'given valid NIB numbers' do
|
|
30
|
+
%w(003509950003132833098 001800031700953102078 003600339910037234245).each do |nib|
|
|
31
|
+
it "returns true for `#{nib}'" do
|
|
32
|
+
expect(User.new(nib: nib)).to be_valid
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe PortugueseNifValidator do
|
|
4
|
+
before(:all) {
|
|
5
|
+
class User < TestModel
|
|
6
|
+
validates :nif, portuguese_nif: true
|
|
7
|
+
end
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
after(:all) { Object.send(:remove_const, :User) }
|
|
11
|
+
|
|
12
|
+
describe 'validation' do
|
|
13
|
+
it 'returns false if the number is empty' do
|
|
14
|
+
expect(User.new(nif: '')).to be_invalid
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'returns false if the number is not defined' do
|
|
18
|
+
expect(User.new(nif: nil)).to be_invalid
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler/setup'
|
|
3
|
+
require 'active_model'
|
|
4
|
+
|
|
5
|
+
require 'portuguese_validators'
|
|
6
|
+
|
|
7
|
+
RSpec.configure do |config|
|
|
8
|
+
include PortugueseValidators
|
|
9
|
+
|
|
10
|
+
config.order = 'random'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class TestModel
|
|
14
|
+
include ActiveModel::Validations
|
|
15
|
+
|
|
16
|
+
def initialize(attributes = {})
|
|
17
|
+
@attributes = attributes
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def read_attribute_for_validation(key)
|
|
21
|
+
@attributes[key]
|
|
22
|
+
end
|
|
23
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: portuguese_validators
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ricardo Otero
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-07-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -39,20 +39,62 @@ dependencies:
|
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: rspec
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
48
|
-
type: :
|
|
48
|
+
type: :development
|
|
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
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: reek
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubocop
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: activemodel
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: 4.1.4
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: 4.1.4
|
|
97
|
+
description: Validators for portuguese NIB, NIF, BI and phone.
|
|
56
98
|
email:
|
|
57
99
|
- oterosantos@gmail.com
|
|
58
100
|
executables: []
|
|
@@ -60,16 +102,25 @@ extensions: []
|
|
|
60
102
|
extra_rdoc_files: []
|
|
61
103
|
files:
|
|
62
104
|
- ".gitignore"
|
|
105
|
+
- ".rspec"
|
|
106
|
+
- ".ruby-gemset"
|
|
107
|
+
- ".ruby-version"
|
|
108
|
+
- ".travis.yml"
|
|
63
109
|
- Gemfile
|
|
64
110
|
- LICENSE.txt
|
|
65
111
|
- README.md
|
|
66
112
|
- Rakefile
|
|
67
113
|
- lib/portuguese_validators.rb
|
|
68
|
-
- lib/portuguese_validators/
|
|
69
|
-
- lib/portuguese_validators/
|
|
70
|
-
- lib/portuguese_validators/
|
|
114
|
+
- lib/portuguese_validators/bi.rb
|
|
115
|
+
- lib/portuguese_validators/nib.rb
|
|
116
|
+
- lib/portuguese_validators/nif.rb
|
|
117
|
+
- lib/portuguese_validators/phone.rb
|
|
71
118
|
- lib/portuguese_validators/version.rb
|
|
72
119
|
- portuguese_validators.gemspec
|
|
120
|
+
- spec/bi_validator_spec.rb
|
|
121
|
+
- spec/nib_validator_spec.rb
|
|
122
|
+
- spec/nif_validator_spec.rb
|
|
123
|
+
- spec/spec_helper.rb
|
|
73
124
|
homepage: http://github.com/rikas/portuguese_validators/fork
|
|
74
125
|
licenses:
|
|
75
126
|
- MIT
|
|
@@ -93,5 +144,9 @@ rubyforge_project:
|
|
|
93
144
|
rubygems_version: 2.2.1
|
|
94
145
|
signing_key:
|
|
95
146
|
specification_version: 4
|
|
96
|
-
summary: Validators for portuguese
|
|
97
|
-
test_files:
|
|
147
|
+
summary: Validators for portuguese NIB, NIF, BI and phone.
|
|
148
|
+
test_files:
|
|
149
|
+
- spec/bi_validator_spec.rb
|
|
150
|
+
- spec/nib_validator_spec.rb
|
|
151
|
+
- spec/nif_validator_spec.rb
|
|
152
|
+
- spec/spec_helper.rb
|