class SwedishPIN::Generator
@private @api private
Generator
for PINs.
Attributes
date[R]
The date all generated PINs will be based on.
Public Class Methods
new(date)
click to toggle source
Creates a new generator for a particular date.
# File lib/swedish_pin/generator.rb, line 15 def initialize(date) @date = date || random_date end
Public Instance Methods
generate(sequence_number)
click to toggle source
Generate a {Personnummer} with the given sequence number.
# File lib/swedish_pin/generator.rb, line 20 def generate(sequence_number) sequence_number ||= random_sequence_number Personnummer.new( year: date.year, month: date.month, day: date.day, sequence_number: sequence_number, control_digit: control_digit(sequence_number) ) end
Private Instance Methods
control_digit(sequence_number)
click to toggle source
# File lib/swedish_pin/generator.rb, line 41 def control_digit(sequence_number) padded = ("%03d" % sequence_number) SwedishPIN.luhn("#{date.strftime("%y%m%d")}#{padded}") end
random_date()
click to toggle source
# File lib/swedish_pin/generator.rb, line 33 def random_date Date.today - Random.rand(0..(110 * 365)) end
random_sequence_number()
click to toggle source
# File lib/swedish_pin/generator.rb, line 37 def random_sequence_number Random.rand(0..999) end