Sha256: a630b98ba605a73a92fae1d8ed0c9ed2e11eb3b343d7affa903aaec41c70fcf2
Contents?: true
Size: 904 Bytes
Versions: 2
Compression:
Stored size: 904 Bytes
Contents
# encoding: utf-8 module PasswordChanger class PasswordGenerator def generate(old_password: '', length: 8) loop do new_password = generate_string(length) return new_password if is_totally_different?(old_password, new_password) && includes_number?(new_password) && has_no_doubled_letters?(new_password) end end private def is_totally_different?(string1, string2) max_length = [string1, string2].max_by { |x| x.length }.length Levenshtein.distance(string1, string2) >= max_length end def has_no_doubled_letters?(string) result = (/(.)\1/ === string) !result end def includes_number?(string) !(string.split(//) & (0..9).map(&:to_s)).blank? end def generate_string(length) o = [('a'..'z'), (0..9)].map { |i| i.to_a }.flatten (0...length).map { o[rand(o.length)] }.join end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
password_changer-0.0.4 | lib/password_changer/password_generator.rb |
password_changer-0.0.3 | lib/password_changer/password_generator.rb |