brid 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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