class TokenChain::Generator

Attributes

anchor_code[R]
codes[R]

Public Class Methods

new(anchor_code, last_code=nil) click to toggle source
# File lib/token_chain/generator.rb, line 7
def initialize anchor_code, last_code=nil
  @anchor_code = anchor_code
  @last_code   = last_code
  @codes       = []
end

Public Instance Methods

generate(quantity=1) click to toggle source
# File lib/token_chain/generator.rb, line 13
def generate quantity=1
  codes = make_new_codes quantity
  quantity > 1 ? codes : codes.last
end
sha() click to toggle source
# File lib/token_chain/generator.rb, line 18
def sha
  @sha ||= Digest::SHA2.new
end

Private Instance Methods

make_new_codes(number) click to toggle source
# File lib/token_chain/generator.rb, line 24
def make_new_codes number
  (1..number).inject([]) do |memo, _|
    part_one = memo.last || @codes.last || @last_code || @anchor_code
    part_two = @anchor_code

    memo << sha.base64digest("#{part_one}#{part_two}")
  end.tap do |new_codes|
    @codes.concat new_codes
  end
end