class Faker::DrivingLicence

Constants

GB_PADDING
NI_CHANCE

Public Class Methods

british_driving_licence(last_name: Faker::Name.last_name, initials: Faker::Name.initials, gender: random_gender, date_of_birth: Faker::Date.birthday(min_age: 18, max_age: 65)) click to toggle source

Produces a random British driving licence number.

@param last_name [String] The last name of the driving licence’s owner. @param initials [String] The initials of the driving licence’s owner. @param gender [String] The gender of the driving licence’s owner. @param date_of_birth [String] The date of birth of the driving licence’s owner. @return [String]

@example

Faker::DrivingLicence.british_driving_licence        #=> "MCDER712081VF7EK"
Faker::DrivingLicence.british_driving_licence(last_name: "O'Carroll",
                                              initials: "J",
                                              gender: :female,
                                              date_of_birth: Date.parse("1986-10-24")) #=> "OCARR815246J91HT"

@faker.version 1.9.2

# File lib/faker/default/driving_licence.rb, line 26
def british_driving_licence(last_name: Faker::Name.last_name, initials: Faker::Name.initials, gender: random_gender, date_of_birth: Faker::Date.birthday(min_age: 18, max_age: 65))
  [
    gb_licence_padding(last_name, 5),
    gb_licence_year(date_of_birth, gender),
    gb_licence_padding(initials, 2),
    gb_licence_checksum
  ].join
end
northern_irish_driving_licence() click to toggle source

Produces a random Northern Irish licence number.

@return [String]

@example

Faker::DrivingLicence.northern_irish_driving_licence #=> "70702548"

@faker.version 1.9.2

# File lib/faker/default/driving_licence.rb, line 44
def northern_irish_driving_licence
  Faker::Number.number(digits: 8).to_s
end
uk_driving_licence(*args) click to toggle source

Produces a random UK driving licence number in either GB or NI format, at a rate consistent with their relative populations

@overload uk_driving_licence(last_name, initials, gender, date_of_birth)

@param last_name [String] The last name of the driving licence's owner.
@param initials [String] The initials of the driving licence's owner.
@param gender [String] The gender of the driving licence's owner.
@param date_of_birth [String] The date of birth of the driving licence's owner.

@overload uk_driving_licence() @return [String]

@example

Faker::DrivingLicence.uk_driving_licence             #=> "OCARR815246J91HT"
Faker::DrivingLicence.uk_driving_licence             #=> "70702548"

@faker.version 1.9.2

# File lib/faker/default/driving_licence.rb, line 64
def uk_driving_licence(*args)
  if Faker::Config.random.rand < NI_CHANCE
    northern_irish_driving_licence
  else
    british_driving_licence(*args)
  end
end
usa_driving_licence(state = 'California') click to toggle source

Produces a random USA driving licence number by state code passed.

@return [String]

@example

Faker::DrivingLicence.usa_driving_licence                 #=> "V5598249"
Faker::DrivingLicence.usa_driving_licence('new mexico')   #=> "270692028"
Faker::DrivingLicence.usa_driving_licence('New Mexico')   #=> "68178637"

@faker.version 2.14.0

# File lib/faker/default/driving_licence.rb, line 83
def usa_driving_licence(state = 'California')
  bothify(fetch("driving_licence.usa.#{state.to_s.strip.downcase.gsub(' ', '_')}"))
rescue I18n::MissingTranslationData => _e
  raise InvalidStatePassed, "Invalid state code passed for USA, '#{state}'"
end

Private Class Methods

gb_licence_checksum() click to toggle source
# File lib/faker/default/driving_licence.rb, line 118
def gb_licence_checksum
  generate(:string) do |g|
    g.int
    g.letter(ranges: ['A'..'Z'], length: 2)
  end
end
gb_licence_padding(str, num_chars) click to toggle source
# File lib/faker/default/driving_licence.rb, line 95
def gb_licence_padding(str, num_chars)
  prepped = str.upcase.gsub(%r{[^A-Z]}, '') + GB_PADDING
  prepped[0..(num_chars - 1)]
end
gb_licence_year(dob, gender) click to toggle source
# File lib/faker/default/driving_licence.rb, line 100
def gb_licence_year(dob, gender)
  generate(:string) do |g|
    g.computed do
      (dob.year / 10) % 10
    end
    g.computed do
      gender_marker = gender == :female ? 50 : 0
      format('%02d', (dob.month + gender_marker))
    end
    g.computed do
      format('%02d', dob.day)
    end
    g.computed do
      dob.year % 10
    end
  end
end
random_gender() click to toggle source
# File lib/faker/default/driving_licence.rb, line 91
def random_gender
  %i[male female].sample(random: Faker::Config.random)
end