license_plate_validator 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 612a3486dc6990acf095cf3f62f377c2576d0331
4
+ data.tar.gz: 07bdfab07e6e9846000e598e8abf38a5e476e9e0
5
+ SHA512:
6
+ metadata.gz: 65f07d4ac403bb6f5247fb1ff2f150e96505328fc5dc20e282c178a33d76f88e15a6470594deb9b47e38b1da1cfdbbd5f89249314af71f0bfd21ef3c2b333f3e
7
+ data.tar.gz: 6802d1f908ed1424bbea8fa5cc15d11c4d6543115fddd26ae4de65312b3978f6094165973690c67797d5bd872ddf95b2bd62cb47ca3c668fee2ec667ed0f7bec
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ gemfile:
6
+ - gemfiles/activemodel-4
7
+ - gemfiles/activemodel-3-2
8
+ - gemfiles/standalone
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in license_plate_validator.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Ariejan de Vroom
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # License Plate Validator
2
+
3
+ [![Build Status](https://travis-ci.org/ariejan/license_plate_validator.png?branch=master)](https://travis-ci.org/ariejan/license_plate_validator)
4
+
5
+ This gem allows you to easily valdiate license plate fields to be valid
6
+ license plates.
7
+
8
+ We're planning on supporting multiple countries, but at this time we can
9
+ only validate Dutch license plates.
10
+
11
+ ## Features
12
+
13
+ Validate Dutch license plates ("kentekens"), includes all ten common Dutch license
14
+ plate types.
15
+
16
+ Special license plates (like those for the Royal family) are not supported.
17
+
18
+ ## Installation
19
+
20
+ Add this line to your application's Gemfile:
21
+
22
+ gem 'license_plate_validator'
23
+
24
+ And then execute:
25
+
26
+ $ bundle
27
+
28
+ Or install it yourself as:
29
+
30
+ $ gem install license_plate_validator
31
+
32
+ ## Usage
33
+
34
+ Without ActiveModel or Rails:
35
+
36
+ LicensePlateValidator.new("60-NFH-1").valid?
37
+ #=> true
38
+
39
+ Or add it to your Rails 3.x or 4.x project, using ActiveModel:
40
+
41
+ class Vehicle < ActiveRecord::Base
42
+ validates :license_plate_number, license_plate: true
43
+ end
44
+
45
+ ## I18n
46
+
47
+ Locales for English and Dutch are provided. See [`lib/license_plate_validator/locales`](https://github.com/ariejan/license_plate_validator/tree/master/lib/license_plate_validator/locales)
48
+ for details.
49
+
50
+ ## Contributing
51
+
52
+ ### Wishlist
53
+
54
+ I'd like to add the following feature (in no specific order), maybe you can help?
55
+
56
+ * Validate uncommon license plates as well (like CD-dd-dd and AA-dd)
57
+ * Check if characters used are actually allowed.
58
+ * Output properly formatted license plate numbers
59
+ * Add support for other countries where possible. Germany, Belgium, France and Poland are high on the list.
60
+
61
+ If you're unsure what to contribute, contact me. :-)
62
+
63
+ ### How to contribute
64
+
65
+ I prefer a pull request with added, but failing, specs to code without
66
+ specs.
67
+
68
+ 1. Fork it
69
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
70
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
71
+ 4. Push to the branch (`git push origin my-new-feature`)
72
+ 5. Create new Pull Request
73
+
74
+ ## License
75
+
76
+ See [LICENSE.txt](https://github.com/ariejan/license_plate_validator/blob/master/LICENSE.txt)
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activemodel", "~> 3.2.0"
4
+ gem "rspec", "~> 2.14.0"
5
+ gem "rake"
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activemodel", "~> 4.0.0"
4
+ gem "rspec", "~> 2.14.0"
5
+ gem "rake"
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rspec", "~> 2.14.0"
4
+ gem "rake"
@@ -0,0 +1,39 @@
1
+ class LicensePlateValidator
2
+
3
+ PATTERNS = [
4
+ # Netherlands
5
+ /^([a-zA-Z]{2})-?([0-9]{2})-?([0-9]{2})$/,
6
+ /^([0-9]{2})-?([0-9]{2})-?([a-zA-Z]{2})$/,
7
+ /^([0-9]{2})-?([a-zA-Z]{2})-?([0-9]{2})$/,
8
+ /^([a-zA-Z]{2})-?([0-9]{2})-?([a-zA-Z]{2})$/,
9
+ /^([a-zA-Z]{2})-?([a-zA-Z]{2})-?([0-9]{2})$/,
10
+ /^([0-9]{2})-?([a-zA-Z]{2})-?([a-zA-Z]{2})$/,
11
+ /^([0-9]{2})-?([a-zA-Z]{3})-?([0-9]{1})$/,
12
+ /^([0-9]{1})-?([a-zA-Z]{3})-?([0-9]{2})$/,
13
+ /^([a-zA-Z]{2})-?([0-9]{3})-?([a-zA-Z]{1})$/,
14
+ /^([a-zA-Z]{1})-?([0-9]{3})-?([a-zA-Z]{2})$/
15
+ ].freeze
16
+
17
+ def initialize(raw)
18
+ @raw = normalize(raw || "")
19
+ end
20
+
21
+ attr_reader :raw
22
+
23
+ def valid?
24
+ PATTERNS.any? { |pattern| raw =~ pattern }
25
+ end
26
+
27
+ def to_s
28
+ raw
29
+ end
30
+
31
+ private
32
+
33
+ def normalize(input)
34
+ input.to_s.upcase.strip.gsub(/[^A-Z0-9]/, '')
35
+ end
36
+ end
37
+
38
+ require 'license_plate_validator/version'
39
+ require 'license_plate_validator/active_model' if defined?(ActiveModel)
@@ -0,0 +1,19 @@
1
+ require 'active_model'
2
+
3
+ module ActiveModel
4
+ module Validations
5
+ class LicensePlateValidator < ::ActiveModel::EachValidator
6
+
7
+ def validate_each(record, attribute, value)
8
+ license_plate = ::LicensePlateValidator.new(value.to_s)
9
+
10
+ if !license_plate.valid?
11
+ record.errors.add(attribute, :invalid_license_plate, message: options[:message])
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+
19
+ I18n.load_path += Dir["#{File.dirname(__FILE__)}/locales/*.yml"]
@@ -0,0 +1,4 @@
1
+ en:
2
+ errors:
3
+ messages:
4
+ invalide_license_plate: is not a valid license plate number
@@ -0,0 +1,4 @@
1
+ en:
2
+ errors:
3
+ messages:
4
+ invalide_license_plate: is geen geldig kenteken
@@ -0,0 +1,3 @@
1
+ class LicensePlateValidator
2
+ VERSION = "1.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'license_plate_validator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "license_plate_validator"
8
+ spec.version = LicensePlateValidator::VERSION
9
+ spec.authors = ["Ariejan de Vroom"]
10
+ spec.email = ["ariejan@ariejan.net"]
11
+ spec.description = %q{Formatting and content of license plate codes can be validated in some countries. This gem add Rails validators for this to your project.}
12
+ spec.summary = %q{Validate license plate numbers for countries that support it.}
13
+ spec.homepage = "https://ariejan.github.io/license_plate_validator"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rspec", "~> 2.14.0"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency 'activemodel', '~> 4.0.0'
25
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ if defined?(ActiveModel)
4
+ class Vehicle < ModelBase
5
+ validates :number, license_plate: true
6
+ end
7
+
8
+ describe Vehicle do
9
+ context "with a valid license plate number" do
10
+ it "is valid" do
11
+ obj = Vehicle.new(number: "60-NFH-1")
12
+ expect(obj).to be_valid
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe LicensePlateValidator do
4
+ it 'should have a version number' do
5
+ LicensePlateValidator::VERSION.should_not be_nil
6
+ end
7
+
8
+ describe "#new" do
9
+ it 'demands one and only one argument' do
10
+ expect { LicensePlateValidator.new }.to raise_error
11
+ expect { LicensePlateValidator.new("a", "b") }.to raise_error
12
+ expect { LicensePlateValidator.new ("a") }.not_to raise_error
13
+ end
14
+
15
+ it 'normalizes the input string' do
16
+ expect(LicensePlateValidator.new('60-NFH-1').to_s).to eql('60NFH1')
17
+ expect(LicensePlateValidator.new('fz-xx-61').to_s).to eql('FZXX61')
18
+ end
19
+ end
20
+
21
+ context "NL - Netherlands" do
22
+ NL_VALID_SAMPLES = [
23
+ "FZ-61-24",
24
+ "24-61-FX",
25
+ "24-FZ-61",
26
+ "FZ-61-XX",
27
+ "FZ-XX-61",
28
+ "82-HS-JH",
29
+ "61-NFH-1",
30
+ "1-KGB-42",
31
+ "FZ-142-X",
32
+ "X-721-FZ"
33
+ ]
34
+
35
+ NL_INVALID_SAMPLES = [
36
+ "DEF-123",
37
+ "123-DEF",
38
+ "DEFGHI",
39
+ "123456"
40
+ ]
41
+
42
+ NL_VALID_SAMPLES.each do |number|
43
+ it "accepts '#{number}'" do
44
+ license = LicensePlateValidator.new(number)
45
+ expect(license).to be_valid
46
+ end
47
+ end
48
+
49
+ NL_INVALID_SAMPLES.each do |number|
50
+ it "does not accept '#{number}'" do
51
+ license = LicensePlateValidator.new(number)
52
+ expect(license).not_to be_valid
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,26 @@
1
+ require 'rspec'
2
+ begin
3
+ require 'active_model'
4
+ rescue LoadError => err
5
+ puts "Running specs without active_model extension"
6
+ end
7
+
8
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
9
+ require 'license_plate_validator'
10
+
11
+ if defined?(ActiveModel)
12
+ class ModelBase
13
+ include ActiveModel::Serialization
14
+ include ActiveModel::Validations
15
+
16
+ attr_accessor :attributes
17
+
18
+ def initialize(attributes = {})
19
+ @attributes = attributes
20
+ end
21
+
22
+ def read_attribute_for_validation(key)
23
+ @attributes[key.to_sym]
24
+ end
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: license_plate_validator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ariejan de Vroom
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.14.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 2.14.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activemodel
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 4.0.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 4.0.0
69
+ description: Formatting and content of license plate codes can be validated in some
70
+ countries. This gem add Rails validators for this to your project.
71
+ email:
72
+ - ariejan@ariejan.net
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - .gitignore
78
+ - .rspec
79
+ - .travis.yml
80
+ - Gemfile
81
+ - LICENSE.txt
82
+ - README.md
83
+ - Rakefile
84
+ - gemfiles/activemodel-3-2
85
+ - gemfiles/activemodel-4
86
+ - gemfiles/standalone
87
+ - lib/license_plate_validator.rb
88
+ - lib/license_plate_validator/active_model.rb
89
+ - lib/license_plate_validator/locales/en.yml
90
+ - lib/license_plate_validator/locales/nl.yml
91
+ - lib/license_plate_validator/version.rb
92
+ - license_plate_validator.gemspec
93
+ - spec/license_plate_validator/active_model_spec.rb
94
+ - spec/license_plate_validator_spec.rb
95
+ - spec/spec_helper.rb
96
+ homepage: https://ariejan.github.io/license_plate_validator
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.0.3
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Validate license plate numbers for countries that support it.
120
+ test_files:
121
+ - spec/license_plate_validator/active_model_spec.rb
122
+ - spec/license_plate_validator_spec.rb
123
+ - spec/spec_helper.rb