class Faker::Vehicle

Constants

MILEAGE_MAX
MILEAGE_MIN
SG_CHECKSUM_CHARS
SG_CHECKSUM_WEIGHTS
VIN_LETTERS
VIN_MAP
VIN_REGEX
VIN_WEIGHTS

Public Class Methods

car_options() click to toggle source

Produces a random list of car options.

@return [Array<String>]

@example

Faker::Vehicle.car_options #=> ["DVD System", "MP3 (Single Disc)", "Tow Package", "CD (Multi Disc)", "Cassette Player", "Bucket Seats", "Cassette Player", "Leather Interior", "AM/FM Stereo", "Third Row Seats"]

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 193
def car_options
  Array.new(rand(5...10)) { fetch('vehicle.car_options') }
end
car_type() click to toggle source

Produces a random car type.

@return [String]

@example

Faker::Vehicle.car_type #=> "Sedan"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 164
def car_type
  fetch('vehicle.car_types')
end
color() click to toggle source

Produces a random vehicle color.

@return [String]

@example

Faker::Vehicle.color #=> "Red"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 112
def color
  fetch('vehicle.colors')
end
door_count()
Alias for: doors
doors() click to toggle source

Produces a random vehicle door count.

@return [Integer]

@example

Faker::Vehicle.doors #=> 1
Faker::Vehicle.door_count #=> 3

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 220
def doors
  sample(fetch_all('vehicle.doors'))
end
Also aliased as: door_count
drive_type() click to toggle source

Produces a random vehicle drive type.

@return [String]

@example

Faker::Vehicle.drive_type #=> "4x2/2-wheel drive"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 138
def drive_type
  fetch('vehicle.drive_types')
end
engine() click to toggle source

Produces a random engine cylinder count.

@return [String]

@example

Faker::Vehicle.engine_size #=> 6
Faker::Vehicle.engine #=> 4

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 178
def engine
  "#{sample(fetch_all('vehicle.doors'))} #{fetch('vehicle.cylinder_engine')}"
end
Also aliased as: engine_size
engine_size()
Alias for: engine
fuel_type() click to toggle source

Produces a random vehicle fuel type.

@return [String]

@example

Faker::Vehicle.fuel_type #=> "Diesel"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 151
def fuel_type
  fetch('vehicle.fuel_types')
end
kilometrage(legacy_min = NOT_GIVEN, legacy_max = NOT_GIVEN, min: MILEAGE_MIN, max: MILEAGE_MAX)
Alias for: mileage
license_plate(legacy_state_abreviation = NOT_GIVEN, state_abbreviation: '') click to toggle source

Produces a random license plate number.

@param state_abbreviation [String] Two letter state abbreviation for license plate generation. @return [String]

@example

Faker::Vehicle.license_plate #=> "DEP-2483"
Faker::Vehicle.license_plate(state_abbreviation: 'FL') #=> "977 UNU"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 274
def license_plate(legacy_state_abreviation = NOT_GIVEN, state_abbreviation: '')
  warn_for_deprecated_arguments do |keywords|
    keywords << :state_abbreviation if legacy_state_abreviation != NOT_GIVEN
  end

  return regexify(bothify(fetch('vehicle.license_plate'))) if state_abbreviation.empty?

  key = "vehicle.license_plate_by_state.#{state_abbreviation}"
  regexify(bothify(fetch(key)))
end
make() click to toggle source

Produces a random vehicle make.

@return [String]

@example

Faker::Vehicle.make #=> "Honda"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 50
def make
  fetch('vehicle.makes')
end
make_and_model() click to toggle source

Produces a random vehicle make and model.

@return [String]

@example

Faker::Vehicle.make_and_model #=> "Dodge Charger"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 84
def make_and_model
  m = make

  "#{m} #{model(make_of_model: m)}"
end
manufacture() click to toggle source

Produces a random vehicle manufacturer.

@return [String]

@example

Faker::Vehicle.manufacture #=> "Lamborghini"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 37
def manufacture
  fetch('vehicle.manufacture')
end
mileage(legacy_min = NOT_GIVEN, legacy_max = NOT_GIVEN, min: MILEAGE_MIN, max: MILEAGE_MAX) click to toggle source

Produces a random mileage/kilometrage for a vehicle.

@param min [Integer] Specific minimum limit for mileage generation. @param max [Integer] Specific maximum limit for mileage generation. @return [Integer]

@example

Faker::Vehicle.mileage #=> 26961
Faker::Vehicle.mileage(min: 50_000) #=> 81557
Faker::Vehicle.mileage(min: 50_000, max: 250_000) #=> 117503
Faker::Vehicle.kilometrage #=> 35378

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 252
def mileage(legacy_min = NOT_GIVEN, legacy_max = NOT_GIVEN, min: MILEAGE_MIN, max: MILEAGE_MAX)
  warn_for_deprecated_arguments do |keywords|
    keywords << :min if legacy_min != NOT_GIVEN
    keywords << :max if legacy_max != NOT_GIVEN
  end

  rand_in_range(min, max)
end
Also aliased as: kilometrage
model(legacy_make_of_model = NOT_GIVEN, make_of_model: '') click to toggle source

Produces a random vehicle model.

@param make_of_model [String] Specific valid vehicle make. @return [String]

@example

Faker::Vehicle.model #=> "A8"
Faker::Vehicle.model(make_of_model: 'Toyota') #=> "Prius"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 65
def model(legacy_make_of_model = NOT_GIVEN, make_of_model: '')
  warn_for_deprecated_arguments do |keywords|
    keywords << :make_of_model if legacy_make_of_model != NOT_GIVEN
  end

  return fetch("vehicle.models_by_make.#{make}") if make_of_model.empty?

  fetch("vehicle.models_by_make.#{make_of_model}")
end
singapore_license_plate() click to toggle source

Produces a random license plate number for Singapore.

@return [String]

@example

Faker::Vehicle.singapore_license_plate #=> "SLV1854M"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 294
def singapore_license_plate
  key = 'vehicle.license_plate'
  plate_number = regexify(bothify(fetch(key)))
  "#{plate_number}#{singapore_checksum(plate_number)}"
end
standard_specs() click to toggle source

Produces a random list of standard specs.

@return [Array<String>]

@example

Faker::Vehicle.standard_specs #=> ["Full-size spare tire w/aluminum alloy wheel", "Back-up camera", "Carpeted cargo area", "Silver accent IP trim finisher -inc: silver shifter finisher", "Back-up camera", "Water-repellent windshield & front door glass", "Floor carpeting"]

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 206
def standard_specs
  Array.new(rand(5...10)) { fetch('vehicle.standard_specs') }
end
style() click to toggle source

Produces a random vehicle style.

@return [String]

@example

Faker::Vehicle.style #=> "ESi"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 99
def style
  fetch('vehicle.styles')
end
transmission() click to toggle source

Produces a random vehicle transmission.

@return [String]

@example

Faker::Vehicle.transmission #=> "Automanual"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 125
def transmission
  fetch('vehicle.transmissions')
end
version() click to toggle source

Produces a car version

@return [String]

@example

Faker::Vehicle.version #=> "40 TFSI Premium"

@faker.version next

# File lib/faker/default/vehicle.rb, line 309
def version
  fetch('vehicle.version')
end
vin() click to toggle source

Produces a random vehicle VIN number.

@return [String]

@example

Faker::Vehicle.vin #=> "LLDWXZLG77VK2LUUF"

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 25
def vin
  regexify(VIN_REGEX)
end
year() click to toggle source

Produces a random car year between 1 and 15 years ago.

@return [Integer]

@example

Faker::Vehicle.year #=> 2008

@faker.version 1.6.4

# File lib/faker/default/vehicle.rb, line 234
def year
  Faker::Time.backward(days: rand_in_range(365, 5475), period: :all, format: '%Y').to_i
end

Private Class Methods

calculate_vin_check_digit(vin) click to toggle source
# File lib/faker/default/vehicle.rb, line 322
def calculate_vin_check_digit(vin)
  sum = 0

  vin.each_char.with_index do |c, i|
    n = vin_char_to_number(c).to_i
    weight = VIN_WEIGHTS[i].to_i
    sum += weight * n
  end

  mod = sum % 11
  mod == 10 ? 'X' : mod
end
first_eight(number) click to toggle source
# File lib/faker/default/vehicle.rb, line 315
def first_eight(number)
  return number[0...8] unless number.nil?

  regexify(VIN_REGEX)
end
Also aliased as: last_eight
last_eight(number)
Alias for: first_eight
singapore_checksum(plate_number) click to toggle source
# File lib/faker/default/vehicle.rb, line 343
def singapore_checksum(plate_number)
  padded_alphabets = format('%3s', plate_number[/^[A-Z]+/]).tr(' ', '-').chars
  padded_digits = format('%04d', plate_number[/\d+/]).chars.map(&:to_i)
  sum = [*padded_alphabets, *padded_digits].each_with_index.reduce(0) do |memo, (char, i)|
    value = char.is_a?(Integer) ? char : char.ord - 64
    memo + (SG_CHECKSUM_WEIGHTS[i] * value)
  end

  SG_CHECKSUM_CHARS.chars[sum % 19]
end
vin_char_to_number(char) click to toggle source
# File lib/faker/default/vehicle.rb, line 335
def vin_char_to_number(char)
  index = VIN_LETTERS.chars.index(char)

  return char.to_i if index.nil?

  VIN_MAP[index]
end