class PasswordKun

instance to configure password options

Public Class Methods

new(options = {}) click to toggle source
# File lib/password_kun.rb, line 18
def initialize(options = {})
  @length = options[:length] || (8..16)
  @kb_layout = options[:kb_layout] || KB.standard
  @has_number = options[:has_number] || true
  @has_layout = options[:has_layout] || true
  @has_uppercase = options[:has_uppercase] || false
  @has_word = options[:has_word] || true
end

Public Instance Methods

make_password(amount = 4) click to toggle source
# File lib/password_kun.rb, line 27
def make_password(amount = 4)
  Array.new(amount).map do
    process_password.shuffle.join('-')
  end
end

Private Instance Methods

process_layout(left_len, pw_que) click to toggle source
# File lib/password_kun.rb, line 69
def process_layout(left_len, pw_que)
  pw_que << Pattern.layout(left_len, @kb_layout)
end
process_number(left_len, pw_que) click to toggle source
# File lib/password_kun.rb, line 61
def process_number(left_len, pw_que)
  number_len = rand(2..left_len - 3)
  number_p = Pattern.number(number_len)
  left_len -= number_p.length
  pw_que << number_p
  [left_len, pw_que]
end
process_password() click to toggle source
# File lib/password_kun.rb, line 35
def process_password
  left_len = rand(@length)
  if @has_word
    process_with_word(left_len, [])
  else
    process_without_word(left_len, [])
  end
end
process_with_word(left_len, pw_que) click to toggle source
# File lib/password_kun.rb, line 44
def process_with_word(left_len, pw_que)
  word_p = Pattern.word(WORD_SRC, FIND_WORD_PATTERN)
  loop do
    break if word_p.length <= left_len - 6

    word_p = Pattern.word(WORD_SRC, FIND_WORD_PATTERN)
  end
  pw_que << word_p
  left_len -= word_p.length
  left_len, pw_que = process_number(left_len, pw_que) if @has_number
  pw_que = process_layout(left_len, pw_que) if @has_layout
  pw_que
end
process_without_word() click to toggle source
# File lib/password_kun.rb, line 58
def process_without_word
end