valvat 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,6 +1,13 @@
1
1
  ### dev
2
2
 
3
- [full changelog](http://github.com/yolk/valvat/compare/v0.1.1...master)
3
+ [full changelog](http://github.com/yolk/valvat/compare/v0.2.0...master)
4
+
5
+ ### 0.2.0 / 2011-01-07
6
+
7
+ [full changelog](http://github.com/yolk/valvat/compare/v0.1.1...v0.2.0)
8
+
9
+ * Rewrote Valvat module to a vat number class for convenience + internal use of Valvat instances
10
+ * I18n: Default error messages in german
4
11
 
5
12
  ### 0.1.1 / 2011-01-07
6
13
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## valvat
2
2
 
3
- Validates european vat numbers. Standalone or as an ActiveModel validator.
3
+ Validates european vat numbers. Standalone or as a ActiveModel validator.
4
4
 
5
5
  ### Features
6
6
 
@@ -14,72 +14,107 @@ valvat is tested and works with ruby 1.8.7/1.9.2 and ActiveModel 3.0.
14
14
 
15
15
  ### Installation
16
16
 
17
- gem install valvat
17
+ gem install valvat
18
18
 
19
19
  ### Basic Usage
20
20
 
21
21
  To verify the syntax of a vat number:
22
22
 
23
- Valvat::Syntax.validate("DE345789003")
24
- => true or false
23
+ Valvat.new("DE345789003").valid?
24
+ => true or false
25
25
 
26
- To check if the given vat number exists:
26
+ To check if the given vat number exists via the VIES web service:
27
27
 
28
- Valvat::Lookup.validate("DE345789003")
29
- => true or false or nil
28
+ Valvat.new("DE345789003").exists?
29
+ => true or false or nil
30
30
 
31
- Keep in mind that the VIES webservice might be offline at some time for some countries. If this happens Valvat::Lookup.validate returns nil.
31
+ Keep in mind that the VIES web service might be offline at some time for some countries. If this happens `Valvat::Lookup.validate` returns `nil`.
32
32
 
33
- See http://ec.europa.eu/taxation_customs/vies/viesspec.do for more accurate information at what time the service for a specific country will be down.
33
+ Visit [http://ec.europa.eu/taxation_customs/vies/viesspec.do](http://ec.europa.eu/taxation_customs/vies/viesspec.do) for more accurate information at what time the service for a specific country will be down.
34
+
35
+ It is also possible to bypass initializing a Valvat instance and check the syntax of a var number string directly with:
36
+
37
+ Valvat::Syntax.validate("DE345789003")
38
+ => true or false
39
+
40
+ Or to lookup a vat number string directly via VIES web service:
41
+
42
+ Valvat::Lookup.validate("DE345789003")
43
+ => true or false or nil
34
44
 
35
45
  ### ActiveModel/Rails3 Usage
36
46
 
37
47
  When the valvat gem is required and ActiveModel is already loaded, everything will work fine out of the box. If your load order differs just add
38
48
 
39
- require 'valvat/active_model'
49
+ require 'valvat/active_model'
40
50
 
41
51
  after ActiveModel has been loaded.
42
52
 
43
- To validate the attribute _vat_number_ add this to your model:
53
+ To validate the attribute `vat_number` add this to your model:
44
54
 
45
- class MyModel < ActiveRecord::Base
46
- validates :vat_number, :valvat => true
47
- end
55
+ class MyModel < ActiveRecord::Base
56
+ validates :vat_number, :valvat => true
57
+ end
48
58
 
49
59
  To additionally perform a lookup via VIES:
50
60
 
51
- validates :vat_number, :valvat => {:lookup => true}
61
+ validates :vat_number, :valvat => {:lookup => true}
52
62
 
53
- By default this will validate to true if the VIES web service is down. To fail in this case simply add the _:fail_if_down_ option:
63
+ By default this will validate to true if the VIES web service is down. To fail in this case simply add the `:fail_if_down` option:
54
64
 
55
- validates :vat_number, :valvat => {:lookup => :fail_if_down}
65
+ validates :vat_number, :valvat => {:lookup => :fail_if_down}
56
66
 
57
- By default blank vat numbers validate to false, to change this add the _:allow_blank_ option:
67
+ By default blank vat numbers validate to false. To change this add the `:allow_blank` option:
68
+
69
+ validates :vat_number, :valvat => {:allow_blank => true}
70
+
71
+ To allow vat numbers from outside of europe, add something like this to your model (country_code should return a upcase iso country code):
58
72
 
59
- validates :vat_number, :valvat => {:allow_blank => true}
73
+ class MyModel < ActiveRecord::Base
74
+ validates :vat_number, :valvat => true, :if => :eu?
75
+
76
+ def eu?
77
+ Valvat::Utils::EU_COUNTRIES.include?(country_code)
78
+ end
79
+ end
60
80
 
61
81
  ### Utilities
62
82
 
63
- To split a vat number into the ISO country code and the remaining chars:
83
+ To split a vat number into the country code and the remaining chars:
64
84
 
65
- Valvat::Utils.split("ATU345789003")
66
- => ["AT", "U345789003"]
85
+ Valvat::Utils.split("ATU345789003")
86
+ => ["AT", "U345789003"]
87
+
88
+ or
89
+
90
+ Valvat.new("ATU345789003").to_a
91
+ => ["AT", "U345789003"]
67
92
 
68
- _split_ always returns an array. If it can not detect the country it returns [nil, nil].
93
+ Both methods always return an array. If it can not detect the country or the given country is located outside of europe it returns `[nil, nil]`. Please note that this does not strictly return the iso country code: for greek vat numbers this returns the iso language code 'EL' instead of the iso country code 'GR'.
94
+
95
+ To extract the iso country code of a given vat number:
96
+
97
+ Valvat.new("EL7345789003").iso_country_code
98
+ => "GR"
99
+
100
+ To extract the vat country code (first two chars in every european vat number):
101
+
102
+ Valvat.new("EL7345789003").vat_country_code
103
+ => "EL"
69
104
 
70
105
  To normalize a vat number:
71
106
 
72
- Valvat::Utils.normalize("atu345789003")
73
- => "ATU345789003"
107
+ Valvat::Utils.normalize("atu345789003")
108
+ => "ATU345789003"
74
109
 
75
- This basically just removes trailing spaces and ensures all chars are upcase.
110
+ This basically just removes trailing spaces and ensures all chars are uppercase.
76
111
 
77
112
  ### Links
78
113
 
79
- * http://ec.europa.eu/taxation_customs/vies
80
- * http://bzst.de/DE/Steuern_International/USt_Identifikationsnummer/Merkblaetter/Aufbau_USt_IdNr.html (german)
81
- * http://en.wikipedia.org/wiki/European_Union_Value_Added_Tax
82
- * http://isvat.appspot.com/
114
+ * [VIES web service](http://ec.europa.eu/taxation_customs/vies)
115
+ * [European vat number formats (german)](http://bzst.de/DE/Steuern_International/USt_Identifikationsnummer/Merkblaetter/Aufbau_USt_IdNr.html)
116
+ * [European vat number formats on Wikipedia](http://en.wikipedia.org/wiki/European_Union_Value_Added_Tax)
117
+ * [isvat VIES REST wrapper](http://isvat.appspot.com/)
83
118
 
84
119
  ### BlaBla
85
120
 
data/lib/valvat.rb CHANGED
@@ -1,5 +1,42 @@
1
- module Valvat
1
+ class Valvat
2
+ def initialize(raw)
3
+ @raw = raw || ""
4
+ @vat_country_code, @to_s_wo_country = to_a
5
+ end
2
6
 
7
+ attr_reader :raw, :vat_country_code, :to_s_wo_country
8
+
9
+ def valid?
10
+ Valvat::Syntax.validate(self)
11
+ end
12
+
13
+ def exists?
14
+ Valvat::Lookup.validate(self)
15
+ end
16
+
17
+ def iso_country_code
18
+ Valvat::Utils.vat_country_to_iso_country(vat_country_code)
19
+ end
20
+
21
+ def european?
22
+ Valvat::Utils::EU_COUNTRIES.include?(iso_country_code)
23
+ end
24
+
25
+ def to_a
26
+ Valvat::Utils.split(raw)
27
+ end
28
+
29
+ def to_s
30
+ raw
31
+ end
32
+
33
+ def inspect
34
+ "#<Valvat #{[raw, iso_country_code].compact.join(" ")}>"
35
+ end
36
+ end
37
+
38
+ def Valvat(vat)
39
+ vat.is_a?(Valvat) ? vat : Valvat.new(vat)
3
40
  end
4
41
 
5
42
  require 'valvat/utils'
@@ -7,12 +7,10 @@ module ActiveModel
7
7
  class ValvatValidator < ::ActiveModel::EachValidator
8
8
 
9
9
  def validate_each(record, attribute, value)
10
- is_valid = Valvat::Syntax.validate(value)
10
+ vat = Valvat(value)
11
11
 
12
- if is_valid && options[:lookup]
13
- is_valid = Valvat::Lookup.validate(value)
14
- is_valid.nil? && is_valid = (options[:lookup] != :fail_if_down)
15
- end
12
+ is_valid = options[:lookup] ? vat.valid? && vat.exists? : vat.valid?
13
+ is_valid.nil? && is_valid = (options[:lookup] != :fail_if_down)
16
14
 
17
15
  unless is_valid
18
16
  record.errors.add(attribute, :invalid_vat,
@@ -28,4 +26,6 @@ module ActiveModel
28
26
  end
29
27
  end
30
28
 
31
- I18n.load_path << File.dirname(__FILE__) + '/../locale/en.yml'
29
+ %w(en de).each do |locale|
30
+ I18n.load_path << "#{File.dirname(__FILE__)}/../locale/#{locale}.yml"
31
+ end
data/lib/valvat/lookup.rb CHANGED
@@ -1,18 +1,18 @@
1
- require 'valvat/utils'
1
+ require 'valvat'
2
2
  require 'net/http'
3
3
  require 'yaml'
4
4
 
5
- module Valvat
5
+ class Valvat
6
6
  module Lookup
7
7
  def self.validate(vat)
8
- parts = Valvat::Utils.split(vat)
9
- return false unless parts[0]
10
-
8
+ vat = Valvat(vat)
9
+ return false unless vat.european?
11
10
  result = begin
12
11
  YAML.load(Net::HTTP.start("isvat.appspot.com", 80) {|http|
13
- http.get("/#{parts.join("/")}/")
12
+ http.get("/#{vat.to_a.join("/")}/")
14
13
  }.body)
15
- rescue
14
+ rescue => err
15
+ raise if FakeWeb::NetConnectNotAllowedError === err
16
16
  nil
17
17
  end
18
18
 
data/lib/valvat/syntax.rb CHANGED
@@ -1,6 +1,6 @@
1
- require 'valvat/utils'
1
+ require 'valvat'
2
2
 
3
- module Valvat
3
+ class Valvat
4
4
  module Syntax
5
5
 
6
6
  VAT_PATTERNS = {
@@ -34,8 +34,9 @@ module Valvat
34
34
  }
35
35
 
36
36
  def self.validate(vat)
37
- pattern = VAT_PATTERNS[Valvat::Utils.split(vat)[0]]
38
- !!(pattern && pattern =~ vat)
37
+ vat = Valvat(vat)
38
+ pattern = VAT_PATTERNS[vat.iso_country_code]
39
+ !!(pattern && pattern =~ vat.to_s)
39
40
  end
40
41
  end
41
42
 
data/lib/valvat/utils.rb CHANGED
@@ -1,4 +1,4 @@
1
- module Valvat
1
+ class Valvat
2
2
  module Utils
3
3
 
4
4
  EU_COUNTRIES = %w(AT BE BG CY CZ DE DK EE ES FI FR GB GR HU IE IT LT LU LV MT NL PL PT RO SE SI SK)
@@ -7,13 +7,16 @@ module Valvat
7
7
  def self.split(vat)
8
8
  COUNTRY_PATTERN =~ vat
9
9
  result = [$1, $2]
10
- result[0] = "GR" if result[0] == "EL"
11
- return [nil, nil] unless EU_COUNTRIES.include?(result[0])
12
- result
10
+ iso_country = vat_country_to_iso_country(result[0])
11
+ EU_COUNTRIES.include?(iso_country) ? result : [nil, nil]
13
12
  end
14
13
 
15
14
  def self.normalize(vat)
16
15
  vat.upcase.gsub(/\A\s+|\s+\Z/, "")
17
16
  end
17
+
18
+ def self.vat_country_to_iso_country(vat_country)
19
+ vat_country == "EL" ? "GR" : vat_country
20
+ end
18
21
  end
19
22
  end
@@ -1,3 +1,3 @@
1
- module Valvat
2
- VERSION = "0.1.1"
1
+ class Valvat
2
+ VERSION = "0.2.0"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -19,4 +19,14 @@ class ModelBase
19
19
  def read_attribute_for_validation(key)
20
20
  @attributes[key]
21
21
  end
22
+ end
23
+
24
+ def without_any_web_requests!
25
+ before(:all) do
26
+ FakeWeb.clean_registry
27
+ FakeWeb.allow_net_connect = false
28
+ end
29
+ after(:all) do
30
+ FakeWeb.allow_net_connect = true
31
+ end
22
32
  end
@@ -10,6 +10,10 @@ describe Valvat::Lookup do
10
10
  it "returns true" do
11
11
  Valvat::Lookup.validate("BE0817331995").should eql(true)
12
12
  end
13
+
14
+ it "allows Valvat instance as input" do
15
+ Valvat::Lookup.validate(Valvat.new("BE0817331995")).should eql(true)
16
+ end
13
17
  end
14
18
 
15
19
  context "not existing vat number" do
@@ -23,9 +27,7 @@ describe Valvat::Lookup do
23
27
  end
24
28
 
25
29
  context "invalid country code / input" do
26
- before do
27
- FakeWeb.register_uri(:get, "http://isvat.appspot.com/AE/259597697/", :body => "false")
28
- end if $fakeweb
30
+ without_any_web_requests!
29
31
 
30
32
  it "returns false" do
31
33
  Valvat::Lookup.validate("AE259597697").should eql(false)
@@ -266,5 +266,10 @@ describe Valvat::Syntax do
266
266
  Valvat::Syntax.validate("xxxxxxxxxx").should eql(false)
267
267
  Valvat::Syntax.validate("BEFR").should eql(false)
268
268
  end
269
+
270
+ it "allows Valvat instance as input" do
271
+ Valvat::Syntax.validate(Valvat.new("DE345889003")).should eql(true)
272
+ Valvat::Syntax.validate(Valvat.new("DE34588900X")).should eql(false)
273
+ end
269
274
  end
270
275
  end
@@ -20,8 +20,8 @@ describe Valvat::Utils do
20
20
  Valvat::Utils.split(" ").should eql([nil, nil])
21
21
  end
22
22
 
23
- it "returns GR on greek vat" do
24
- Valvat::Utils.split("EL999999999").should eql(["GR", "999999999"])
23
+ it "returns EL (language iso code) on greek vat" do
24
+ Valvat::Utils.split("EL999999999").should eql(["EL", "999999999"])
25
25
  end
26
26
  end
27
27
 
@@ -42,4 +42,16 @@ describe Valvat::Utils do
42
42
  Valvat::Utils.normalize("ESX4588900X").should eql("ESX4588900X")
43
43
  end
44
44
  end
45
+
46
+ context "#vat_country_to_iso_country" do
47
+ it "returns iso country code on greek iso language 'EL'" do
48
+ Valvat::Utils.vat_country_to_iso_country("EL").should eql("GR")
49
+ end
50
+
51
+ Valvat::Utils::EU_COUNTRIES.each do |iso|
52
+ it "returns unchanged iso country code '#{iso}'" do
53
+ Valvat::Utils.vat_country_to_iso_country(iso).should eql(iso)
54
+ end
55
+ end
56
+ end
45
57
  end
data/spec/valvat_spec.rb CHANGED
@@ -1,5 +1,249 @@
1
1
  require 'spec_helper'
2
2
 
3
+ require 'spec_helper'
4
+
3
5
  describe Valvat do
6
+ context "#new" do
7
+ it "demands one and only one argument" do
8
+ lambda{ Valvat.new }.should raise_error(ArgumentError)
9
+ lambda{ Valvat.new("a", "b") }.should raise_error(ArgumentError)
10
+ lambda{ Valvat.new("a") }.should_not raise_error
11
+ end
12
+ end
13
+
14
+ context "Valvat()" do
15
+ it "initializes new Valvat instance on string" do
16
+ Valvat("abc").should be_kind_of(Valvat)
17
+ end
18
+
19
+ it "returns same Valvat instance on Valvat instance" do
20
+ vat = Valvat.new("abc")
21
+ Valvat(vat).should be_kind_of(Valvat)
22
+ Valvat(vat).object_id.should eql(vat.object_id)
23
+ end
24
+ end
25
+
26
+ context "on european vat number" do
27
+ let(:de_vat) { Valvat.new("DE259597697") } # valid & exists
28
+ let(:at_vat) { Valvat.new("ATU458890031") } # invalid
29
+ let(:gr_vat) { Valvat.new("EL999943280") } # valid & exists
30
+
31
+ context "#valid?" do
32
+ it "returns true on valid numbers" do
33
+ de_vat.should be_valid
34
+ gr_vat.should be_valid
35
+ end
36
+
37
+ it "returns false on invalid numbers" do
38
+ at_vat.should_not be_valid
39
+ end
40
+ end
41
+
42
+ context "#exist?" do
43
+ context "on existing vat numbers" do
44
+ before do
45
+ Valvat::Lookup.stub(:validate => true)
46
+ end
47
+
48
+ it "returns true" do
49
+ de_vat.should be_exist
50
+ gr_vat.should be_exist
51
+ end
52
+ end
53
+
54
+ context "on not existing vat numbers" do
55
+ before do
56
+ Valvat::Lookup.stub(:validate => false)
57
+ end
58
+
59
+ it "returns false" do
60
+ at_vat.should_not be_exist
61
+ end
62
+ end
63
+ end
64
+
65
+ context "#iso_country_code" do
66
+ it "returns iso country code on iso_country_code" do
67
+ de_vat.iso_country_code.should eql("DE")
68
+ at_vat.iso_country_code.should eql("AT")
69
+ end
70
+
71
+ it "returns GR iso country code on greek vat number" do
72
+ gr_vat.iso_country_code.should eql("GR")
73
+ end
74
+ end
75
+
76
+ context "#vat_country_code" do
77
+ it "returns iso country code on iso_country_code" do
78
+ de_vat.vat_country_code.should eql("DE")
79
+ at_vat.vat_country_code.should eql("AT")
80
+ end
81
+
82
+ it "returns EL iso language code on greek vat number" do
83
+ gr_vat.vat_country_code.should eql("EL")
84
+ end
85
+ end
86
+
87
+ context "#european?" do
88
+ it "returns true" do
89
+ de_vat.should be_european
90
+ at_vat.should be_european
91
+ gr_vat.should be_european
92
+ end
93
+ end
94
+
95
+ context "#to_s" do
96
+ it "returns full vat number" do
97
+ de_vat.to_s.should eql("DE259597697")
98
+ at_vat.to_s.should eql("ATU458890031")
99
+ gr_vat.to_s.should eql("EL999943280")
100
+ end
101
+ end
102
+
103
+ context "#inspect" do
104
+ it "returns vat number with iso country code" do
105
+ de_vat.inspect.should eql("#<Valvat DE259597697 DE>")
106
+ at_vat.inspect.should eql("#<Valvat ATU458890031 AT>")
107
+ gr_vat.inspect.should eql("#<Valvat EL999943280 GR>")
108
+ end
109
+ end
110
+
111
+ context "#to_a" do
112
+ it "calls Valvat::Utils.split with raw vat number and returns result" do
113
+ de_vat # initialize
114
+ Valvat::Utils.should_receive(:split).once.with("DE259597697").and_return(["a", "b"])
115
+ de_vat.to_a.should eql(["a", "b"])
116
+ end
117
+ end
118
+ end
119
+
120
+ context "on vat number from outside of europe" do
121
+ let(:us_vat) { Valvat.new("US345889003") }
122
+ let(:ch_vat) { Valvat.new("CH445889003") }
123
+
124
+ context "#valid?" do
125
+ it "returns false" do
126
+ us_vat.should_not be_valid
127
+ ch_vat.should_not be_valid
128
+ end
129
+ end
130
+
131
+ context "#exist?" do
132
+ without_any_web_requests!
133
+
134
+ it "returns false" do
135
+ us_vat.should_not be_exist
136
+ ch_vat.should_not be_exist
137
+ end
138
+ end
139
+
140
+ context "#iso_country_code" do
141
+ it "returns nil" do
142
+ us_vat.iso_country_code.should eql(nil)
143
+ ch_vat.iso_country_code.should eql(nil)
144
+ end
145
+ end
146
+
147
+ context "#vat_country_code" do
148
+ it "returns nil" do
149
+ us_vat.vat_country_code.should eql(nil)
150
+ ch_vat.vat_country_code.should eql(nil)
151
+ end
152
+ end
153
+
154
+ context "#european?" do
155
+ it "returns false" do
156
+ us_vat.should_not be_european
157
+ ch_vat.should_not be_european
158
+ end
159
+ end
160
+
161
+ context "#to_s" do
162
+ it "returns full given vat number" do
163
+ us_vat.to_s.should eql("US345889003")
164
+ ch_vat.to_s.should eql("CH445889003")
165
+ end
166
+ end
167
+
168
+ context "#inspect" do
169
+ it "returns vat number without iso country code" do
170
+ us_vat.inspect.should eql("#<Valvat US345889003>")
171
+ ch_vat.inspect.should eql("#<Valvat CH445889003>")
172
+ end
173
+ end
174
+
175
+ end
4
176
 
177
+ context "on non-sense/empty vat number" do
178
+ let(:only_iso_vat) { Valvat.new("DE") }
179
+ let(:num_vat) { Valvat.new("12445889003") }
180
+ let(:empty_vat) { Valvat.new("") }
181
+ let(:nil_vat) { Valvat.new("") }
182
+
183
+ context "#valid?" do
184
+ it "returns false" do
185
+ only_iso_vat.should_not be_valid
186
+ num_vat.should_not be_valid
187
+ empty_vat.should_not be_valid
188
+ nil_vat.should_not be_valid
189
+ end
190
+ end
191
+
192
+ context "#exist?" do
193
+ without_any_web_requests!
194
+
195
+ it "returns false" do
196
+ only_iso_vat.should_not be_exist
197
+ num_vat.should_not be_exist
198
+ empty_vat.should_not be_exist
199
+ nil_vat.should_not be_exist
200
+ end
201
+ end
202
+
203
+ context "#iso_country_code" do
204
+ it "returns nil" do
205
+ only_iso_vat.iso_country_code.should eql(nil)
206
+ num_vat.iso_country_code.should eql(nil)
207
+ empty_vat.iso_country_code.should eql(nil)
208
+ nil_vat.iso_country_code.should eql(nil)
209
+ end
210
+ end
211
+
212
+ context "#vat_country_code" do
213
+ it "returns nil" do
214
+ only_iso_vat.vat_country_code.should eql(nil)
215
+ num_vat.vat_country_code.should eql(nil)
216
+ empty_vat.vat_country_code.should eql(nil)
217
+ nil_vat.vat_country_code.should eql(nil)
218
+ end
219
+ end
220
+
221
+ context "#european?" do
222
+ it "returns false" do
223
+ only_iso_vat.should_not be_european
224
+ num_vat.should_not be_european
225
+ empty_vat.should_not be_european
226
+ nil_vat.should_not be_european
227
+ end
228
+ end
229
+
230
+ context "#to_s" do
231
+ it "returns full given vat number" do
232
+ only_iso_vat.to_s.should eql("DE")
233
+ num_vat.to_s.should eql("12445889003")
234
+ empty_vat.to_s.should eql("")
235
+ nil_vat.to_s.should eql("")
236
+ end
237
+ end
238
+
239
+ context "#inspect" do
240
+ it "returns vat number without iso country code" do
241
+ only_iso_vat.inspect.should eql("#<Valvat DE>")
242
+ num_vat.inspect.should eql("#<Valvat 12445889003>")
243
+ empty_vat.inspect.should eql("#<Valvat >")
244
+ nil_vat.inspect.should eql("#<Valvat >")
245
+ end
246
+ end
247
+
248
+ end
5
249
  end
data/valvat.gemspec CHANGED
@@ -9,9 +9,9 @@ Gem::Specification.new do |s|
9
9
  s.authors = ["Sebastian Munz"]
10
10
  s.email = ["sebastian@yo.lk"]
11
11
  s.homepage = "https://github.com/yolk/valvat"
12
- s.summary = %q{Validates european vat numbers. Standalone or as an ActiveModel validator.}
12
+ s.summary = %q{Validates european vat numbers. Standalone or as a ActiveModel validator.}
13
13
  s.description = <<-END
14
- Validates european vat numbers. Standalone or as an ActiveModel validator.
14
+ Validates european vat numbers. Standalone or as a ActiveModel validator.
15
15
 
16
16
  * Simple syntax verification
17
17
  * Lookup via the VIES web service
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sebastian Munz
@@ -104,7 +104,7 @@ dependencies:
104
104
  version: "0"
105
105
  type: :development
106
106
  version_requirements: *id006
107
- description: " Validates european vat numbers. Standalone or as an ActiveModel validator.\n \n * Simple syntax verification\n * Lookup via the VIES web service\n * Works standalone without any gem dependencies\n * (Optional) ActiveModel/Rails3 integration\n * I18n locales for country specific error messages\n"
107
+ description: " Validates european vat numbers. Standalone or as a ActiveModel validator.\n \n * Simple syntax verification\n * Lookup via the VIES web service\n * Works standalone without any gem dependencies\n * (Optional) ActiveModel/Rails3 integration\n * I18n locales for country specific error messages\n"
108
108
  email:
109
109
  - sebastian@yo.lk
110
110
  executables: []
@@ -168,7 +168,7 @@ rubyforge_project:
168
168
  rubygems_version: 1.3.7
169
169
  signing_key:
170
170
  specification_version: 3
171
- summary: Validates european vat numbers. Standalone or as an ActiveModel validator.
171
+ summary: Validates european vat numbers. Standalone or as a ActiveModel validator.
172
172
  test_files:
173
173
  - spec/spec_helper.rb
174
174
  - spec/valvat/active_model_spec.rb