class EasyPin::Generator
Public Class Methods
build(dictionary: EASY_PUBLIC, random_seed: 24, padding: 4, separator: '')
click to toggle source
# File lib/easy_pin.rb, line 11 def self.build(dictionary: EASY_PUBLIC, random_seed: 24, padding: 4, separator: '') Generator.new(base_converter: BaseConverter.new(dictionary.size), checksum_generator: ChecksumGenerator.new(dictionary.size), tumbler: Tumbler.new(dictionary, Random.new(random_seed)), padder: Padder.new(padding), formatter: Formatter.new(separator)) end
new(base_converter:, checksum_generator:, tumbler:, padder:, formatter:)
click to toggle source
# File lib/easy_pin.rb, line 19 def initialize(base_converter:, checksum_generator:, tumbler:, padder:, formatter:) @base_converter = base_converter @checksum_generator = checksum_generator @tumbler = tumbler @padder = padder @formatter = formatter end
Public Instance Methods
generate(integer)
click to toggle source
# File lib/easy_pin.rb, line 27 def generate(integer) integer = integer.to_i raise InvalidInput, 'input must be an integer >= 1' unless integer >= 1 parts = @base_converter.convert(integer) parts = @checksum_generator.checksum(parts) parts = @padder.pad(parts) parts = @tumbler.tumble(parts) @formatter.format(parts) end
revert(code)
click to toggle source
# File lib/easy_pin.rb, line 43 def revert(code) parts = @formatter.unformat(code) parts = @tumbler.untumble(parts) parts = @padder.unpad(parts) parts = @checksum_generator.unchecksum(parts) @base_converter.unconvert(parts) end