Class: EasyPin::Generator
- Inherits:
-
Object
- Object
- EasyPin::Generator
- Defined in:
- lib/easy_pin.rb
Class Method Summary collapse
Instance Method Summary collapse
- #generate(integer) ⇒ Object
-
#initialize(base_converter:, checksum_generator:, tumbler:, padder:, formatter:) ⇒ Generator
constructor
A new instance of Generator.
- #revert(code) ⇒ Object
Constructor Details
#initialize(base_converter:, checksum_generator:, tumbler:, padder:, formatter:) ⇒ Generator
Returns a new instance of Generator.
19 20 21 22 23 24 25 |
# 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 |
Class Method Details
.build(dictionary: EASY_PUBLIC, random_seed: 24, padding: 4, separator: '') ⇒ Object
11 12 13 14 15 16 17 |
# 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 |
Instance Method Details
#generate(integer) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# 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) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# 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 |