validates_vat_number 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Aurélien Malisart
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,63 @@
1
+ = Description
2
+
3
+ Use this plugin to validate VAT numbers for european countries.
4
+
5
+ = Usage
6
+
7
+ To validate a model field as a valid intracom VAT number :
8
+
9
+ validates_vat_number :vat_number
10
+
11
+ It may be optional like this :
12
+
13
+ validates_vat_number :vat_number, :allow_blank => true
14
+
15
+ If you want the VAT number's country to match another kind of country field, use
16
+ the option :
17
+
18
+ validates_vat_number :vat_number, :country_method => :my_method
19
+
20
+ where it is supposed that your model has a method named 'my_method' which
21
+ returns the country code you want to match. The available country codes
22
+ available for Europa are: DE, AT, BE, BG, CY, DK, ES, EE, FI, FR, EL, HU, IE,
23
+ IT, LV, LT, LU, MT, NL, PL, PT, GB, RO, SK, SI, SE and CZ.
24
+
25
+ Example :
26
+
27
+ class Invoice < ActiveRecord::Base
28
+ validates_vat_number :vat_number, :country_method => :country_code
29
+
30
+ # Logic to return the country code
31
+ def country_code
32
+ case country.downcase
33
+ when 'belgium' then 'BE'
34
+ when 'france' then 'FR'
35
+ when 'sweden' then 'SE'
36
+ # ...
37
+ else nil
38
+ end
39
+ end
40
+ end
41
+
42
+ = Installation
43
+
44
+ As a gem in your environment.rb :
45
+
46
+ config.gem 'validates_vat_number'
47
+
48
+ As an old-school Rails plugin :
49
+
50
+ script/plugin install git://github.com/aurels/validates_vat_number.git
51
+
52
+ = Tests
53
+
54
+ If you want to run the specs :
55
+
56
+ rake spec
57
+
58
+ = Credits
59
+
60
+ This plugin in released under MIT license by Aurélien Malisart (see LICENSE
61
+ file).
62
+
63
+ (c) http://aurelien.malisart.be
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'spec/rake/spectask'
4
+
5
+ desc "Run specs"
6
+ Spec::Rake::SpecTask.new do |t|
7
+ t.spec_files = Rake::FileList["spec/**/*_spec.rb"]
8
+ t.spec_opts = ["-c"]
9
+ end
10
+
11
+ task :default => :spec
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'validates_vat_number'
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,75 @@
1
+ module ValidatesVatNumber
2
+ VAT_PATTERNS = {
3
+ 'DE' => /\ADE[0-9]{9}\Z/, # Germany
4
+ 'AT' => /\AATU[0-9]{8}\Z/, # Austria
5
+ 'BE' => /\ABE[0-9]{10}\Z/, # Belgium
6
+ 'BG' => /\ABG[0-9]{9,10}\Z/, # Bulgaria
7
+ 'CY' => /\ACY[0-9]{8}[A-Z]\Z/, # Cyprus
8
+ 'DK' => /\ADK[0-9]{8}\Z/, # Denmark
9
+ 'ES' => /\AES[0-9]{9}\Z/, # Spain
10
+ 'EE' => /\AEE[0-9]{9}\Z/, # Estonia
11
+ 'FI' => /\AFI[0-9]{8}\Z/, # Finland
12
+ 'FR' => /\AFR[A-Z0-9]{2}[0-9]{9}\Z/, # France
13
+ 'EL' => /\AEL[0-9]{9}\Z/, # Greece
14
+ 'HU' => /\AHU[0-9]{8}\Z/, # Hungary
15
+ 'IE' => /\AIE([0-9][A-Z][0-9]{5}[A-Z]|[0-9]{7}[A-Z])\Z/, # Ireland
16
+ 'IT' => /\AIT[0-9]{11}\Z/, # Italy
17
+ 'LV' => /\ALV[0-9]{11}\Z/, # Latvia
18
+ 'LT' => /\ALT([0-9]{9}|[0-9]{12})\Z/, # Lithuania
19
+ 'LU' => /\ALU[0-9]{8}\Z/, # Luxembourg
20
+ 'MT' => /\AMT[0-9]{8}\Z/, # Malta
21
+ 'NL' => /\ANL[0-9]{9}[A-Z][0-9]{2}\Z/, # Netherlands
22
+ 'PL' => /\APL[0-9]{10}\Z/, # Poland
23
+ 'PT' => /\APT[0-9]{9}\Z/, # Portugal
24
+ 'GB' => /\AGB([0-9]{9}|[A-Z0-9]{2}[0-9]{3})\Z/, # United Kingdom
25
+ 'RO' => /\ARO[0-9]{9}\Z/, # Romania
26
+ 'SK' => /\ASK[0-9]{10}\Z/, # Slovakia
27
+ 'SI' => /\ASI[0-9]{8}\Z/, # Slovenia
28
+ 'SE' => /\ASE[0-9]{12}\Z/, # Sweden
29
+ 'CZ' => /\ACZ[0-9]{8,10}\Z/ # Czech Republic
30
+ }
31
+ end
32
+
33
+ class ActiveRecord::Base
34
+ def self.validates_vat_number(*attr_names)
35
+ configuration = { :on => :save, :allow_blank => false }
36
+ configuration.update(attr_names.extract_options!)
37
+
38
+ validates_each(attr_names, configuration) do |record, attr_name, value|
39
+ if configuration[:country_method]
40
+ country = record.send(configuration[:country_method]).to_s
41
+ if !ValidatesVatNumber::VAT_PATTERNS.has_key?(country) || value.to_s !~ ValidatesVatNumber::VAT_PATTERNS[country]
42
+ record.errors.add(attr_name, :invalid)
43
+ end
44
+ else
45
+ unless ValidatesVatNumber::VAT_PATTERNS.values.detect { |p| value.to_s =~ p }
46
+ record.errors.add(attr_name, configuration[:message])
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ # ActiveModel/Rails 3 style ? :
54
+
55
+ # module ActiveModel
56
+ # module Validations
57
+ # module ClassMethods
58
+ # def validates_vat_number(*attr_names)
59
+ # configuration = {
60
+ # :message => ActiveRecord::Errors.default_error_messages[:invalid],
61
+ # :on => :save,
62
+ # :with => nil
63
+ # }
64
+ #
65
+ # validates_each(attr_names, configuration) do |record, attr_name, value|
66
+ # unless configuration[:allow_blank] && value.to_s.blank?
67
+ # unless ValidatesVatNumber::VAT_PATTERNS.values.detect { |p| value.to_s =~ p }
68
+ # record.errors.add(attr_name, configuration[:message])
69
+ # end
70
+ # end
71
+ # end
72
+ # end
73
+ # end
74
+ # end
75
+ # end
@@ -0,0 +1,40 @@
1
+ # Migrations ===================================================================
2
+
3
+ ActiveRecord::Schema.define do
4
+ create_table :invoices, :force => true do |t|
5
+ t.string :vat_number
6
+ end
7
+
8
+ create_table :optional_vat_invoices, :force => true do |t|
9
+ t.string :vat_number
10
+ end
11
+
12
+ create_table :country_checked_invoices, :force => true do |t|
13
+ t.string :vat_number
14
+ t.string :country
15
+ end
16
+ end
17
+
18
+ # Models =======================================================================
19
+
20
+ class Invoice < ActiveRecord::Base
21
+ validates_vat_number :vat_number
22
+ end
23
+
24
+ class OptionalVatInvoice < ActiveRecord::Base
25
+ validates_vat_number :vat_number, :allow_blank => true
26
+ end
27
+
28
+ class CountryCheckedInvoice < ActiveRecord::Base
29
+ validates_vat_number :vat_number, :country_method => :country_code
30
+
31
+ # Logic to return the country code
32
+ def country_code
33
+ case country.downcase
34
+ when 'belgium' then 'BE'
35
+ when 'france' then 'FR'
36
+ when 'sweden' then 'SE'
37
+ else nil
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require 'active_support'
4
+ require 'active_record'
5
+ require 'action_controller'
6
+ require 'action_view'
7
+
8
+ require File.dirname(__FILE__) + '/../lib/validates_vat_number.rb'
9
+
10
+ # ActiveRecord setup ===========================================================
11
+
12
+ ActiveRecord::Base.establish_connection({
13
+ :adapter => 'sqlite3',
14
+ :database => 'test.db'
15
+ })
16
+
17
+ require 'models'
@@ -0,0 +1,345 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Invoice do
4
+
5
+ # DE
6
+
7
+ it "should validate well a DE vat number" do
8
+ Invoice.new(:vat_number => "DE345889003").should be_valid
9
+
10
+ Invoice.new(:vat_number => "DE34588900").should_not be_valid
11
+ Invoice.new(:vat_number => "DE3458890090").should_not be_valid
12
+ Invoice.new(:vat_number => "DE34588900C").should_not be_valid
13
+ end
14
+
15
+ # AT
16
+
17
+ it "should validate well a AT vat number" do
18
+ Invoice.new(:vat_number => "ATU03458890").should be_valid
19
+
20
+ Invoice.new(:vat_number => "ATU034588908").should_not be_valid
21
+ Invoice.new(:vat_number => "ATU0345908").should_not be_valid
22
+ Invoice.new(:vat_number => "ATU0345889Y").should_not be_valid
23
+ end
24
+
25
+ # BE
26
+
27
+ it "should validate well a BE vat number" do
28
+ Invoice.new(:vat_number => "BE0817331995").should be_valid
29
+
30
+ Invoice.new(:vat_number => "BE081733199").should_not be_valid
31
+ Invoice.new(:vat_number => "BE08173319944").should_not be_valid
32
+ Invoice.new(:vat_number => "BE081733199H").should_not be_valid
33
+ end
34
+
35
+ # BG
36
+
37
+ it "should validate well a BG vat number" do
38
+ Invoice.new(:vat_number => "BG468134789").should be_valid
39
+ Invoice.new(:vat_number => "BG4681347897").should be_valid
40
+
41
+ Invoice.new(:vat_number => "BG46813478979").should_not be_valid
42
+ Invoice.new(:vat_number => "BG4681347897C").should_not be_valid
43
+ Invoice.new(:vat_number => "BG46813478G").should_not be_valid
44
+ Invoice.new(:vat_number => "BG46813478").should_not be_valid
45
+ end
46
+
47
+ # CY
48
+
49
+ it "should validate well a CY vat number" do
50
+ Invoice.new(:vat_number => "CY36579347A").should be_valid
51
+
52
+ Invoice.new(:vat_number => "CY36579347").should_not be_valid
53
+ Invoice.new(:vat_number => "CY365793478").should_not be_valid
54
+ Invoice.new(:vat_number => "CY365793G").should_not be_valid
55
+ end
56
+
57
+ # DK
58
+
59
+ it "should validate well a DK vat number" do
60
+ Invoice.new(:vat_number => "DK67893463").should be_valid
61
+
62
+ Invoice.new(:vat_number => "DK678934637").should_not be_valid
63
+ Invoice.new(:vat_number => "DK6789346").should_not be_valid
64
+ Invoice.new(:vat_number => "DK6789346H").should_not be_valid
65
+ end
66
+
67
+ # ES
68
+
69
+ it "should validate well a ES vat number" do
70
+ Invoice.new(:vat_number => "ES567345987").should be_valid
71
+ Invoice.new(:vat_number => "ES5673459879").should_not be_valid
72
+
73
+ Invoice.new(:vat_number => "ES56734598").should_not be_valid
74
+ Invoice.new(:vat_number => "ES56734598J").should_not be_valid
75
+ end
76
+
77
+ # EE
78
+
79
+ it "should validate well a EE vat number" do
80
+ Invoice.new(:vat_number => "EE678678456").should be_valid
81
+ Invoice.new(:vat_number => "EE6786784560").should_not be_valid
82
+ Invoice.new(:vat_number => "EE67867845").should_not be_valid
83
+ Invoice.new(:vat_number => "EE67867845K").should_not be_valid
84
+ end
85
+
86
+ # FI
87
+
88
+ it "should validate well a FI vat number" do
89
+ Invoice.new(:vat_number => "FI67845638").should be_valid
90
+
91
+ Invoice.new(:vat_number => "FI678456389").should_not be_valid
92
+ Invoice.new(:vat_number => "FI6784563").should_not be_valid
93
+ Invoice.new(:vat_number => "FI6784563K").should_not be_valid
94
+ end
95
+
96
+ # FR
97
+
98
+ it "should validate well a FR vat number" do
99
+ Invoice.new(:vat_number => "FR99123543267").should be_valid
100
+ Invoice.new(:vat_number => "FRBB123543267").should be_valid
101
+ Invoice.new(:vat_number => "FR9B123543267").should be_valid
102
+ Invoice.new(:vat_number => "FRB9123543267").should be_valid
103
+
104
+ Invoice.new(:vat_number => "FR99123543267B").should_not be_valid
105
+ Invoice.new(:vat_number => "FRBB12354326").should_not be_valid
106
+ Invoice.new(:vat_number => "FR9B123543F67").should_not be_valid
107
+ Invoice.new(:vat_number => "FRB9123543").should_not be_valid
108
+ end
109
+
110
+ # EL
111
+
112
+ it "should validate well a EL vat number" do
113
+ Invoice.new(:vat_number => "EL678456345").should be_valid
114
+
115
+ Invoice.new(:vat_number => "EL67845634").should_not be_valid
116
+ Invoice.new(:vat_number => "EL6784563459").should_not be_valid
117
+ Invoice.new(:vat_number => "EL67845634P").should_not be_valid
118
+ end
119
+
120
+ # HU
121
+
122
+ it "should validate well a HU vat number" do
123
+ Invoice.new(:vat_number => "HU67894595").should be_valid
124
+
125
+ Invoice.new(:vat_number => "HU6789459").should_not be_valid
126
+ Invoice.new(:vat_number => "HU67894595L").should_not be_valid
127
+ Invoice.new(:vat_number => "HU6789459J").should_not be_valid
128
+ end
129
+
130
+ # IE
131
+
132
+ it "should validate well a IE vat number" do
133
+ Invoice.new(:vat_number => "IE1B12345J").should be_valid
134
+ Invoice.new(:vat_number => "IE1234567B").should be_valid
135
+
136
+ Invoice.new(:vat_number => "IE1B123459").should_not be_valid
137
+ Invoice.new(:vat_number => "IE19123450").should_not be_valid
138
+ Invoice.new(:vat_number => "IEA9123450").should_not be_valid
139
+ end
140
+
141
+ # IT
142
+
143
+ it "should validate well a IT vat number" do
144
+ Invoice.new(:vat_number => "IT45875359285").should be_valid
145
+
146
+ Invoice.new(:vat_number => "IT458753592859").should_not be_valid
147
+ Invoice.new(:vat_number => "IT4587535928G").should_not be_valid
148
+ Invoice.new(:vat_number => "IT4587535928").should_not be_valid
149
+ end
150
+
151
+ # LV
152
+
153
+ it "should validate well a LV vat number" do
154
+ Invoice.new(:vat_number => "LV85678368906").should be_valid
155
+
156
+ Invoice.new(:vat_number => "LV8567836890").should_not be_valid
157
+ Invoice.new(:vat_number => "LV856783689066").should_not be_valid
158
+ Invoice.new(:vat_number => "LV8567836890S").should_not be_valid
159
+ end
160
+
161
+ # LT
162
+
163
+ it "should validate well a LT vat number" do
164
+ Invoice.new(:vat_number => "LT678678987").should be_valid
165
+ Invoice.new(:vat_number => "LT678678987956").should be_valid
166
+
167
+ Invoice.new(:vat_number => "LT67867898").should_not be_valid
168
+ Invoice.new(:vat_number => "LT6786789870").should_not be_valid
169
+ Invoice.new(:vat_number => "LT678678987K").should_not be_valid
170
+ Invoice.new(:vat_number => "LT67867898709").should_not be_valid
171
+ Invoice.new(:vat_number => "LT6786789870C").should_not be_valid
172
+ Invoice.new(:vat_number => "LT67867898795H").should_not be_valid
173
+ end
174
+
175
+ # LU
176
+
177
+ it "should validate well a LU vat number" do
178
+ Invoice.new(:vat_number => "LU45679456").should be_valid
179
+
180
+ Invoice.new(:vat_number => "LU4567945").should_not be_valid
181
+ Invoice.new(:vat_number => "LU456794560").should_not be_valid
182
+ Invoice.new(:vat_number => "LU4567945J").should_not be_valid
183
+ end
184
+
185
+ # MT
186
+
187
+ it "should validate well a MT vat number" do
188
+ Invoice.new(:vat_number => "MT64569367").should be_valid
189
+
190
+ Invoice.new(:vat_number => "MT6456936").should_not be_valid
191
+ Invoice.new(:vat_number => "MT645693679").should_not be_valid
192
+ Invoice.new(:vat_number => "MT6456936L").should_not be_valid
193
+ end
194
+
195
+ # NL
196
+
197
+ it "should validate well a NL vat number" do
198
+ Invoice.new(:vat_number => "NL673739491A77").should be_valid
199
+
200
+ Invoice.new(:vat_number => "NL673739491977").should_not be_valid
201
+ Invoice.new(:vat_number => "NL67373949197").should_not be_valid
202
+ Invoice.new(:vat_number => "NL67373949").should_not be_valid
203
+ end
204
+
205
+ # PL
206
+
207
+ it "should validate well a PL vat number" do
208
+ Invoice.new(:vat_number => "PL6784567284").should be_valid
209
+
210
+ Invoice.new(:vat_number => "PL678456728").should_not be_valid
211
+ Invoice.new(:vat_number => "PL67845672849").should_not be_valid
212
+ Invoice.new(:vat_number => "PL678456728K").should_not be_valid
213
+ end
214
+
215
+ # PT
216
+
217
+ it "should validate well a PT vat number" do
218
+ Invoice.new(:vat_number => "PT346296476").should be_valid
219
+
220
+ Invoice.new(:vat_number => "PT34629647").should_not be_valid
221
+ Invoice.new(:vat_number => "PT3462964769").should_not be_valid
222
+ end
223
+
224
+ # GB
225
+
226
+ it "should validate well a GB vat number" do
227
+ Invoice.new(:vat_number => "GB123456789").should be_valid
228
+ Invoice.new(:vat_number => "GBAB123").should be_valid
229
+ Invoice.new(:vat_number => "GBA0123").should be_valid
230
+ Invoice.new(:vat_number => "GB0B123").should be_valid
231
+ Invoice.new(:vat_number => "GB00123").should be_valid
232
+
233
+ Invoice.new(:vat_number => "GB12345678").should_not be_valid
234
+ Invoice.new(:vat_number => "GBAB1238").should_not be_valid
235
+ Invoice.new(:vat_number => "GBA0123L").should_not be_valid
236
+ Invoice.new(:vat_number => "GB0B12300").should_not be_valid
237
+ Invoice.new(:vat_number => "GB00123L").should_not be_valid
238
+ end
239
+
240
+ # RO
241
+
242
+ it "should validate well a RO vat number" do
243
+ Invoice.new(:vat_number => "RO856723965").should be_valid
244
+ end
245
+
246
+ # SK
247
+
248
+ it "should validate well a SK vat number" do
249
+ Invoice.new(:vat_number => "SK5683075682").should be_valid
250
+ end
251
+
252
+ # SI
253
+
254
+ it "should validate well a SI vat number" do
255
+ Invoice.new(:vat_number => "SI74357893").should be_valid
256
+ end
257
+
258
+ # SE
259
+
260
+ it "should validate well a SE vat number" do
261
+ Invoice.new(:vat_number => "SE567396352789").should be_valid
262
+ end
263
+
264
+ # CZ
265
+
266
+ it "should validate well a CZ vat number" do
267
+ Invoice.new(:vat_number => "CZ56389267").should be_valid
268
+ Invoice.new(:vat_number => "CZ563892670").should be_valid
269
+ Invoice.new(:vat_number => "CZ5638926790").should be_valid
270
+ end
271
+
272
+ # Blank
273
+
274
+ it "should not be valid if vat number is blank" do
275
+ Invoice.new(:vat_number => '').should_not be_valid
276
+ end
277
+
278
+ # Misc
279
+
280
+ it "should be invalid if really non-sense VAT number is passed" do
281
+ Invoice.new(:vat_number => '345678').should_not be_valid
282
+ Invoice.new(:vat_number => 'BE').should_not be_valid
283
+ Invoice.new(:vat_number => 'BEFR').should_not be_valid
284
+ Invoice.new(:vat_number => 'ZERTYU').should_not be_valid
285
+ Invoice.new(:vat_number => 'be817331995').should_not be_valid
286
+ Invoice.new(:vat_number => '&hczeà').should_not be_valid
287
+ end
288
+ end
289
+
290
+ describe OptionalVatInvoice do
291
+ it "should be valid if vat number is correct" do
292
+ OptionalVatInvoice.new(:vat_number => 'BE0817331995').should be_valid
293
+ end
294
+
295
+ it "should not be valid if vat number is incorrect" do
296
+ OptionalVatInvoice.new(:vat_number => 'BE081733199').should_not be_valid
297
+ end
298
+
299
+ it "should be valid if vat number is blank" do
300
+ OptionalVatInvoice.new(:vat_number => '').should be_valid
301
+ end
302
+ end
303
+
304
+ describe CountryCheckedInvoice do
305
+ it "should be valid if vat number is correct and matches country" do
306
+ CountryCheckedInvoice.new(
307
+ :vat_number => 'BE0817331995',
308
+ :country => 'Belgium'
309
+ ).should be_valid
310
+
311
+ CountryCheckedInvoice.new(
312
+ :vat_number => 'FRBB123543267',
313
+ :country => 'France'
314
+ ).should be_valid
315
+ end
316
+
317
+ it "should not be valid if vat number is correct and does not match country" do
318
+ CountryCheckedInvoice.new(
319
+ :vat_number => 'BE0817331995',
320
+ :country => ''
321
+ ).should_not be_valid
322
+
323
+ CountryCheckedInvoice.new(
324
+ :vat_number => 'BE0817331995',
325
+ :country => 'France'
326
+ ).should_not be_valid
327
+
328
+ CountryCheckedInvoice.new(
329
+ :vat_number => 'BE0817331995',
330
+ :country => 'FunkyCountry'
331
+ ).should_not be_valid
332
+ end
333
+
334
+ it "should be valid if vat number is blank" do
335
+ CountryCheckedInvoice.new(
336
+ :vat_number => '',
337
+ :country => ''
338
+ ).should_not be_valid
339
+
340
+ CountryCheckedInvoice.new(
341
+ :vat_number => '',
342
+ :country => 'Belgium'
343
+ ).should_not be_valid
344
+ end
345
+ end
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: validates_vat_number
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.2"
5
+ platform: ruby
6
+ authors:
7
+ - "Aur\xC3\xA9lien Malisart"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-24 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Validations for european countries VAT numbers
17
+ email: aurelien.malisart@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ files:
25
+ - lib/validates_vat_number.rb
26
+ - spec/models.rb
27
+ - spec/spec_helper.rb
28
+ - spec/validates_vat_number/validations_spec.rb
29
+ - LICENSE
30
+ - README.rdoc
31
+ - Rakefile
32
+ - install.rb
33
+ - init.rb
34
+ - uninstall.rb
35
+ has_rdoc: true
36
+ homepage: http://github.com/aurels/validates_vat_number
37
+ licenses: []
38
+
39
+ post_install_message:
40
+ rdoc_options:
41
+ - --line-numbers
42
+ - --inline-source
43
+ - --title
44
+ - CanCan
45
+ - --main
46
+ - README.rdoc
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "1.2"
60
+ version:
61
+ requirements: []
62
+
63
+ rubyforge_project:
64
+ rubygems_version: 1.3.5
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Validations for european countries VAT numbers
68
+ test_files: []
69
+