vindsl 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 168344f7d069efc67d9d3029b23145b5c8c8f387
4
+ data.tar.gz: 828a35672e933b98c98543a8a8244b47e2e6fe09
5
+ SHA512:
6
+ metadata.gz: 77d7de356b4b0bdb9257437a0ff820c0214fd6ce89bfdca4751c80d7c7feef44f3e1063719acfe669d3ac5ae8b495241a89d3e1e1161ec12df2bdfc1f5d897fc
7
+ data.tar.gz: ebc8bbc9d7c47db9663c5502297221d047f2282fbcd46a0243e1d0b51c25712749f0bf5d52d2bcb759f260f75ca24556a2900f2946df3767ee53ff2c737421af
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --require spec_helper
3
+ --color --format documentation
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vindsl.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Bryce Kerley
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,39 @@
1
+ # Vindsl
2
+
3
+ Vindsl (pronounced like the Fast and Furious star) is a tool for looking up
4
+ information about cars.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'vindsl'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install vindsl
21
+
22
+ ## Usage
23
+
24
+ ```ruby
25
+ v = Vindsl::VIN.new '1ZVBP8AM7C5280000'
26
+
27
+ v.country #=> 'United States'
28
+ v.manufacturer #=> 'Ford'
29
+ ```
30
+
31
+ ## Contributing
32
+
33
+ 1. Fork it ( https://github.com/bkerley/vindsl/fork )
34
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
35
+ 3. Write some RSpecs
36
+ 5. Implement your feature
37
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
38
+ 4. Push to the branch (`git push origin my-new-feature`)
39
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,7 @@
1
+ module Vindsl
2
+ module Alphabet
3
+ ALPHABET = %w{A B C D E F G H J K L M N P R S T V W X Y }
4
+
5
+ ALPHABET_WITH_NUMBERS = ALPHABET + %w{ 1 2 3 4 5 6 7 8 9 }
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ module Vindsl
2
+ class PrefixMatcher
3
+ def initialize(data)
4
+ @data = data
5
+ end
6
+
7
+ def find(prefix)
8
+ @data[first_prefix prefix]
9
+ end
10
+
11
+ def all_prefixes(str)
12
+ str.length.times.map{|n| str[0..n]}
13
+ end
14
+
15
+ def first_prefix(prefix)
16
+ all_prefixes(prefix).detect do |pfx|
17
+ @data[pfx]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module Vindsl
2
+ VERSION = "0.0.1"
3
+ end
data/lib/vindsl/vin.rb ADDED
@@ -0,0 +1,38 @@
1
+ require 'vindsl/wmi'
2
+ require 'vindsl/alphabet'
3
+
4
+ module Vindsl
5
+ class VIN
6
+ def initialize(vin)
7
+ @vin = vin.upcase
8
+ end
9
+
10
+ def wmi
11
+ @vin[0..3]
12
+ end
13
+
14
+ def country
15
+ WMI.country_for @vin
16
+ end
17
+
18
+ def manufacturer
19
+ WMI.manufacturer_for @vin
20
+ end
21
+
22
+ def model_year
23
+ year_character = position(10)
24
+ base = pre_2009? ? 1980 : 2010
25
+
26
+ base + Vindsl::Alphabet::ALPHABET_WITH_NUMBERS.index(year_character)
27
+ end
28
+
29
+ private
30
+ def position(n)
31
+ @vin[n-1]
32
+ end
33
+
34
+ def pre_2009?
35
+ position(7) =~ /\d/
36
+ end
37
+ end
38
+ end
data/lib/vindsl/wmi.rb ADDED
@@ -0,0 +1,173 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'vindsl/prefix_matcher'
3
+
4
+ module Vindsl
5
+ # World Manufacturer Number
6
+ module WMI
7
+ COUNTRIES = {
8
+ 'A' => 'South Africa',
9
+ 'CL9' => 'Tunisia',
10
+ 'J' => 'Japan',
11
+ 'K' => 'South Korea',
12
+ 'SA' => 'United Kingdom',
13
+ 'SCC' => 'United Kingdom',
14
+ 'SCE' => 'Ireland',
15
+ 'TM' => 'Czech Republic',
16
+ 'TR' => 'Hungary',
17
+ 'U' => 'Romania',
18
+ 'VA' => 'Austria',
19
+ 'VF' => 'France',
20
+ 'VS' => 'Spain',
21
+ 'VV' => 'Spain',
22
+ 'W' => 'Germany',
23
+ 'YK' => 'Finland',
24
+ 'YS3' => 'Sweden',
25
+ 'YTN' => 'Sweden',
26
+ 'YV1' => 'Sweden',
27
+ 'Z' => 'Italy',
28
+ '1' => 'United States',
29
+ '2' => 'Canada',
30
+ '3' => 'Mexico',
31
+ '4' => 'United States',
32
+ '5' => 'United States',
33
+ '6' => 'Australia',
34
+ '8' => 'Argentina',
35
+ '9' => 'Brazil',
36
+ }
37
+
38
+ MANUFACTURERS = {
39
+ 'AAV' => "Volkswagen",
40
+ 'AFA' => "Ford",
41
+ 'CL9' => "Wallyscar",
42
+ 'JA' => "Isuzu",
43
+ 'JF' => "Fuji Heavy Industries",
44
+ 'JH' => "Honda",
45
+ 'JMB' => "Mitsubishi",
46
+ 'JMZ' => "Mazda",
47
+ 'JN' => "Nissan",
48
+ 'JS' => "Suzuki",
49
+ 'JT' => "Toyota",
50
+ 'KL' => "Daewoo",
51
+ 'KMH' => "Hyundai",
52
+ 'KN' => "Kia",
53
+ 'KPT' => "SsangYong",
54
+ 'SAJ' => "Jaguar",
55
+ 'SAL' => "Land Rover",
56
+ 'SAR' => "Rover",
57
+ 'SCC' => "Lotus Cars",
58
+ 'SCE' => "DeLorean",
59
+ 'TMA' => "Hyundai",
60
+ 'TMB' => "Škoda",
61
+ 'TRU' => "Audi",
62
+ 'UU' => "Dacia",
63
+ 'VA0' => "ÖAF",
64
+ 'VF1' => "Renault",
65
+ 'VF3' => "Peugeot",
66
+ 'VF6' => "Renault Trucks/Volvo",
67
+ 'VF7' => "Citroën",
68
+ 'VFE' => "IvecoBus",
69
+ 'VSS' => "SEAT",
70
+ 'VV9' => "Tauro Sport Auto",
71
+ 'WAU' => "Audi",
72
+ 'WAP' => "Alpina",
73
+ 'WBA' => "BMW",
74
+ 'WBS' => "BMW M",
75
+ 'WDB' => "Mercedes-Benz",
76
+ 'WDC' => "DaimlerChrysler AG/Daimler AG",
77
+ 'WDD' => "DaimlerChrysler AG/Daimler AG",
78
+ 'WMX' => "DaimlerChrysler AG/Daimler AG",
79
+ 'WEB' => "EvoBus",
80
+ 'WF0' => "Ford Germany",
81
+ 'WJM' => "Iveco",
82
+ 'WJR' => "Irmscher",
83
+ 'WKK' => "Kässbohrer",
84
+ 'WMA' => "MAN",
85
+ 'WME' => "Smart",
86
+ 'WMW' => "Mini",
87
+ 'WP0' => "Porsche car",
88
+ 'WP1' => "Porsche SUV",
89
+ 'WUA' => "Quattro",
90
+ 'WVG' => "Volkswagen",
91
+ 'WVW' => "Volkswagen",
92
+ 'WV1' => "Volkswagen Commercial Vehicles",
93
+ 'WV2' => "Volkswagen Commercial Vehicles",
94
+ 'W0L' => "Opel/Vauxhall",
95
+ 'W0SV' => "Opel Special Vehicles",
96
+ 'YK1' => "Saab",
97
+ 'YS3' => "Saab",
98
+ 'YTN' => "Saab NEVS",
99
+ 'YV1' => "Volvo Cars",
100
+ 'ZAM' => "Maserati",
101
+ 'ZAR' => "Alfa Romeo",
102
+ 'ZCF' => "Iveco",
103
+ 'ZFA' => "Fiat Automobiles",
104
+ 'ZFF' => "Ferrari",
105
+ 'ZGA' => "IvecoBus",
106
+ 'ZHW' => "Lamborghini",
107
+ 'ZLA' => "Lancia",
108
+ '1C' => "Chrysler",
109
+ '1F' => "Ford",
110
+ '1G' => "General Motors",
111
+ '1G3' => "Oldsmobile",
112
+ '1GC' => "Chevrolet",
113
+ '1GM' => "Pontiac",
114
+ '1H' => "Honda",
115
+ '1J' => "Jeep",
116
+ '1L' => "Lincoln",
117
+ '1M' => "Mercury",
118
+ '1N' => "Nissan",
119
+ '1VW' => "Volkswagen",
120
+ '1YV' => "Mazda",
121
+ '1Z' => 'Ford',
122
+ '2F' => "Ford",
123
+ '2G' => "General Motors",
124
+ '2G1' => "Chevrolet",
125
+ '2G2' => "Pontiac",
126
+ '2H' => "Honda",
127
+ '2HM' => "Hyundai",
128
+ '2M' => "Mercury",
129
+ '2T' => "Toyota",
130
+ '3F' => "Ford",
131
+ '3G' => "General Motors",
132
+ '3H' => "Honda",
133
+ '3N' => "Nissan",
134
+ '3VW' => "Volkswagen",
135
+ '4F' => "Mazda",
136
+ '4J' => "Mercedes-Benz",
137
+ '4M' => "Mercury",
138
+ '4S' => "Subaru",
139
+ '4T' => "Toyota",
140
+ '4US' => "BMW",
141
+ '5F' => "Honda",
142
+ '5L' => "Lincoln",
143
+ '5T' => "Toyota",
144
+ '5YJ' => "Tesla",
145
+ '6F' => "Ford",
146
+ '6G' => "General Motors",
147
+ '6G1' => "Chevrolet",
148
+ '6G2' => "Pontiac",
149
+ '6H' => "Holden",
150
+ '6MM' => "Mitsubishi",
151
+ '6T1' => "Toyota",
152
+ '8AP' => "Fiat",
153
+ '8AT' => "Iveco",
154
+ '9BD' => "Fiat Automóveis",
155
+ '9BW' => "Volkswagen",
156
+ '93H' => "Honda",
157
+ '93W' => "Fiat Professional",
158
+ '93Z' => "Iveco",
159
+ '9BH' => "Hyundai",
160
+ }
161
+
162
+ COUNTRY_MATCHER = PrefixMatcher.new COUNTRIES
163
+ MANUFACTURER_MATCHER = PrefixMatcher.new MANUFACTURERS
164
+
165
+ def self.country_for(vin)
166
+ COUNTRY_MATCHER.find vin
167
+ end
168
+
169
+ def self.manufacturer_for(vin)
170
+ MANUFACTURER_MATCHER.find vin
171
+ end
172
+ end
173
+ end
data/lib/vindsl.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "vindsl/version"
2
+
3
+ module Vindsl
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,36 @@
1
+ require 'vindsl/prefix_matcher'
2
+
3
+ describe Vindsl::PrefixMatcher do
4
+ let(:data){ {'a'=>'a', 'ba' => 'ba', 'bb' => 'bb'} }
5
+
6
+ subject{ described_class.new data }
7
+
8
+ it 'matches a one-character string' do
9
+ expect(subject.find 'a').to eq 'a'
10
+ end
11
+
12
+ it 'matches a max-character string' do
13
+ expect(subject.find 'ba').to eq 'ba'
14
+ end
15
+
16
+ it 'returns nil on a failed match' do
17
+ expect(subject.find 'c').to be_nil
18
+ end
19
+
20
+ describe 'all_prefixes' do
21
+ it 'calculates all prefixes for a string' do
22
+ expect(subject.all_prefixes 'abc').to eq %w{a ab abc}
23
+ end
24
+ end
25
+
26
+ describe 'first_prefix' do
27
+ it 'returns the first prefix that matches a hash entry' do
28
+ expect(subject.first_prefix 'abc').to eq 'a'
29
+ expect(subject.first_prefix 'ba').to eq 'ba'
30
+ end
31
+
32
+ it 'returns nil on a non-matching prefix' do
33
+ expect(subject.first_prefix 'ccc').to be_nil
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,89 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
4
+ # file to always be loaded, without a need to explicitly require it in any files.
5
+ #
6
+ # Given that it is always loaded, you are encouraged to keep this file as
7
+ # light-weight as possible. Requiring heavyweight dependencies from this file
8
+ # will add to the boot time of your test suite on EVERY test run, even for an
9
+ # individual file that may not need all of that loaded. Instead, consider making
10
+ # a separate helper file that requires the additional dependencies and performs
11
+ # the additional setup, and require it from the spec files that actually need it.
12
+ #
13
+ # The `.rspec` file also contains a few flags that are not defaults but that
14
+ # users commonly want.
15
+ #
16
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+ RSpec.configure do |config|
18
+ # rspec-expectations config goes here. You can use an alternate
19
+ # assertion/expectation library such as wrong or the stdlib/minitest
20
+ # assertions if you prefer.
21
+ config.expect_with :rspec do |expectations|
22
+ # This option will default to `true` in RSpec 4. It makes the `description`
23
+ # and `failure_message` of custom matchers include text for helper methods
24
+ # defined using `chain`, e.g.:
25
+ # be_bigger_than(2).and_smaller_than(4).description
26
+ # # => "be bigger than 2 and smaller than 4"
27
+ # ...rather than:
28
+ # # => "be bigger than 2"
29
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
30
+ end
31
+
32
+ # rspec-mocks config goes here. You can use an alternate test double
33
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
34
+ config.mock_with :rspec do |mocks|
35
+ # Prevents you from mocking or stubbing a method that does not exist on
36
+ # a real object. This is generally recommended, and will default to
37
+ # `true` in RSpec 4.
38
+ mocks.verify_partial_doubles = true
39
+ end
40
+
41
+ # The settings below are suggested to provide a good initial experience
42
+ # with RSpec, but feel free to customize to your heart's content.
43
+ =begin
44
+ # These two settings work together to allow you to limit a spec run
45
+ # to individual examples or groups you care about by tagging them with
46
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
47
+ # get run.
48
+ config.filter_run :focus
49
+ config.run_all_when_everything_filtered = true
50
+
51
+ # Limits the available syntax to the non-monkey patched syntax that is recommended.
52
+ # For more details, see:
53
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
54
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
55
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
56
+ config.disable_monkey_patching!
57
+
58
+ # This setting enables warnings. It's recommended, but in some cases may
59
+ # be too noisy due to issues in dependencies.
60
+ config.warnings = true
61
+
62
+ # Many RSpec users commonly either run the entire suite or an individual
63
+ # file, and it's useful to allow more verbose output when running an
64
+ # individual spec file.
65
+ if config.files_to_run.one?
66
+ # Use the documentation formatter for detailed output,
67
+ # unless a formatter has already been configured
68
+ # (e.g. via a command-line flag).
69
+ config.default_formatter = 'doc'
70
+ end
71
+
72
+ # Print the 10 slowest examples and example groups at the
73
+ # end of the spec run, to help surface which specs are running
74
+ # particularly slow.
75
+ config.profile_examples = 10
76
+
77
+ # Run specs in random order to surface order dependencies. If you find an
78
+ # order dependency and want to debug it, you can fix the order by providing
79
+ # the seed, which is printed after each run.
80
+ # --seed 1234
81
+ config.order = :random
82
+
83
+ # Seed global randomization in this process using the `--seed` CLI option.
84
+ # Setting this allows you to use `--seed` to deterministically reproduce
85
+ # test failures related to randomization by passing the same `--seed` value
86
+ # as the one that triggered the failure.
87
+ Kernel.srand config.seed
88
+ =end
89
+ end
data/spec/vin_spec.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'vindsl/vin'
2
+
3
+ describe Vindsl::VIN do
4
+
5
+ describe "Bryce's 2012 Mustang" do
6
+ let(:scarlet){ '1ZVBP8AM7C5280000' }
7
+ subject{ described_class.new scarlet }
8
+
9
+ it 'looks up the correct country of origin' do
10
+ expect(subject.country).to eq 'United States'
11
+ end
12
+
13
+ it 'looks up the correct manufacturer' do
14
+ expect(subject.manufacturer).to eq 'Ford'
15
+ end
16
+
17
+ it 'looks up the correct model year' do
18
+ expect(subject.model_year).to eq 2012
19
+ end
20
+ end
21
+ end
data/vindsl.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vindsl/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vindsl"
8
+ spec.version = Vindsl::VERSION
9
+ spec.authors = ["Bryce Kerley"]
10
+ spec.email = ["bkerley@brycekerley.net"]
11
+ spec.summary = %q{Vehicle Information Number gem}
12
+ spec.description = %q{This gem implements lookup tables for car serial numbers.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency 'rspec', '~> 3.1'
24
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vindsl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Bryce Kerley
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-12 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.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ description: This gem implements lookup tables for car serial numbers.
56
+ email:
57
+ - bkerley@brycekerley.net
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - lib/vindsl.rb
69
+ - lib/vindsl/alphabet.rb
70
+ - lib/vindsl/prefix_matcher.rb
71
+ - lib/vindsl/version.rb
72
+ - lib/vindsl/vin.rb
73
+ - lib/vindsl/wmi.rb
74
+ - spec/prefix_matcher_spec.rb
75
+ - spec/spec_helper.rb
76
+ - spec/vin_spec.rb
77
+ - vindsl.gemspec
78
+ homepage: ''
79
+ licenses:
80
+ - MIT
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubyforge_project:
98
+ rubygems_version: 2.2.2
99
+ signing_key:
100
+ specification_version: 4
101
+ summary: Vehicle Information Number gem
102
+ test_files:
103
+ - spec/prefix_matcher_spec.rb
104
+ - spec/spec_helper.rb
105
+ - spec/vin_spec.rb