class VsTokenGenerator::Token

Attributes

group_size[RW]
length[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/vs_token_generator.rb, line 13
def initialize(params = {})
  @length = params.fetch(:length, @@length)
  @group_size = params.fetch(:group_size, @@group_size)
end

Public Instance Methods

generate(token=raw_token) click to toggle source
# File lib/vs_token_generator.rb, line 22
def generate(token=raw_token)
  pretty_token(token, @group_size)
end
raw_token() click to toggle source
# File lib/vs_token_generator.rb, line 18
def raw_token
  (1..@length).map { random_char @@charset }.join
end

Private Instance Methods

pretty_token(input, group_size) click to toggle source
# File lib/vs_token_generator.rb, line 27
def pretty_token(input, group_size)
  return input if group_size < 1
  input.split('').each_slice(group_size).map(&:join).join('-')
end
random_char(charset) click to toggle source
# File lib/vs_token_generator.rb, line 32
def random_char(charset)
  charset[SecureRandom.random_number(charset.size)]
end