brid 0.2.0 → 0.2.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.
data/README.md CHANGED
@@ -17,6 +17,12 @@ Or install it yourself as:
17
17
 
18
18
  $ gem install brid
19
19
 
20
+ Or if you want use Rails3 validations on ActiveModel, add this to your application's Gemfile:
21
+
22
+ ```
23
+ gem 'brid-rails'
24
+ ```
25
+
20
26
  ## Components
21
27
 
22
28
  * CPF object with validation (brazilian document)
@@ -43,9 +49,9 @@ CPF.new(13524687601).valid? # true
43
49
  ### Validating a CNPJ
44
50
 
45
51
  ``` ruby
46
- CNPJ.new('18.781.203/0001-28').valid? # true
47
- (Mod11.new('8.781.203/0001', :base => 2..9) * 2).to_s == '8781203000128' # true
48
- '8.781.203/0001'.mod11(2, :base => 2..9) == '8781203000128' # true
52
+ CNPJ.new('18.781.203/0001-28').valid? # true
53
+ (Mod11.new('18.781.203/0001', :base => 2..9) * 2).to_s == '18781203000128' # true
54
+ '18.781.203/0001'.mod11(2, :base => 2..9) == '18781203000128' # true
49
55
 
50
56
  ```
51
57
 
@@ -69,7 +75,6 @@ CredCard.new('411119876333502').valid? # true
69
75
 
70
76
  ## Next Steps
71
77
 
72
- * Develop a rails plugin built on top of ActiveRecord
73
78
  * Develop a smart generator for fixture on tests (I thought of doing built on top of ffaker, like my othre gem: [ffaker-cpfcnpj](https://github.com/halan/ffaker-cpfcnpj) )
74
79
 
75
80
  ## Contributing
data/brid.gemspec CHANGED
@@ -14,4 +14,5 @@ Gem::Specification.new do |gem|
14
14
  gem.name = "brid"
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Brid::VERSION
17
+ gem.date = Time.new.strftime("%Y-%m-%d")
17
18
  end
@@ -3,7 +3,7 @@ module Brid
3
3
  def initialize number
4
4
  @number = clear_number(number)
5
5
 
6
- raise ArgumentError.new "invalid number" unless (14..19).include? @number.length
6
+ @number = @number.rjust! 14, '0' unless (14..19).include? @number.length
7
7
  end
8
8
 
9
9
  def sequential
@@ -2,12 +2,11 @@ class GenericID
2
2
  def number_length; 0; end;
3
3
  def check_digits_length; 1; end;
4
4
 
5
+ attr_reader :number
5
6
  def initialize number
6
7
  @number = clear_number(number)
7
-
8
- if number_length > 0
9
- raise ArgumentError.new "invalid number" if @number.length != number_length
10
- end
8
+
9
+ @number = @number.rjust number_length, '0' if number_length > 0 and @number.length != number_length
11
10
  end
12
11
 
13
12
  def check_digits
@@ -23,6 +22,8 @@ class GenericID
23
22
  end
24
23
 
25
24
  def valid?
25
+ return @valid if self.frozen?
26
+
26
27
  @valid ||= begin
27
28
  valid_number == @number and not invalid_sequential?
28
29
  rescue TypeError
@@ -30,6 +31,12 @@ class GenericID
30
31
  end
31
32
  end
32
33
 
34
+ def freeze
35
+ check_digits
36
+ valid?
37
+ super
38
+ end
39
+
33
40
  def invalid_sequential?
34
41
  @invalid_sequential ||=begin
35
42
  sequential.chars.to_a.uniq.count.eql? 1
@@ -46,7 +53,7 @@ class GenericID
46
53
  end
47
54
 
48
55
  def clear_number number
49
- number.to_s.scan(/\d/).join
56
+ number.to_s.gsub(/\D/, '')
50
57
  end
51
58
  end
52
59
 
@@ -4,8 +4,6 @@ module Brid
4
4
 
5
5
  def initialize number
6
6
  @number = clear_number(number).rjust number_length, '0'
7
-
8
- raise ArgumentError.new "invalid number" if @number.length != number_length
9
7
  end
10
8
 
11
9
 
data/lib/brid/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Brid
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/spec/cpf_spec.rb CHANGED
@@ -9,5 +9,6 @@ describe CPF do
9
9
  it { CPF.new('000.000.000-00').should_not be_valid }
10
10
  it { CPF.new('111.111.111-11').should_not be_valid }
11
11
 
12
- it { lambda { CPF.new('foobar') }.should raise_error(ArgumentError)}
12
+ it { CPF.new('foobar').should_not be_valid }
13
+
13
14
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Halan Pinheiro
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-07-24 00:00:00 Z
18
+ date: 2012-07-25 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: Brazilian identifications like CPF, CNPJ, Titulo de Eleitor