class PasswordGenerator
Constants
- CONSOSTANTS
- DEFAULT_GENERATE_OPTIONS
- VOWELS
Public Class Methods
new(options={})
click to toggle source
# File lib/passwords_generator.rb, line 16 def initialize(options={}) @params = DEFAULT_GENERATE_OPTIONS.merge(options) @dictionary = Dictionary.new(@params[:custom_dictionary_file]) unless @params[:without_word] @password = '' end
Public Instance Methods
generate()
click to toggle source
# File lib/passwords_generator.rb, line 22 def generate @params[:length] < 8 || @params[:without_word] ? generate_without_word : generate_with_word unless @params[:skip_upper_case] @params[:count_upper_case].times{random_letter_capital} end @password end
Private Instance Methods
capital_letter()
click to toggle source
# File lib/passwords_generator.rb, line 70 def capital_letter random_index = rand(@password.length - 1) random_letter = @password[random_index] letter = /[a-z]/.match(random_letter).nil? ? nil : random_letter [random_index, letter] end
generate_with_word(length = @params[:length])
click to toggle source
# File lib/passwords_generator.rb, line 32 def generate_with_word(length = @params[:length]) if length > 0 const = length >= 6 ? rand(4..6) : length @password << random_word(const) generate_with_word(length-const) else @password end end
generate_without_word()
click to toggle source
# File lib/passwords_generator.rb, line 42 def generate_without_word @params[:length].times{|number| @password << random_symbol(number) } end
random_letter_capital()
click to toggle source
# File lib/passwords_generator.rb, line 61 def random_letter_capital letter = capital_letter if letter[1].nil? random_letter_capital else @password[letter[0]] = letter[1].upcase end end
random_symbol(number)
click to toggle source
# File lib/passwords_generator.rb, line 57 def random_symbol(number) number.even? ? VOWELS.sample : CONSOSTANTS.sample end
random_word(length)
click to toggle source
# File lib/passwords_generator.rb, line 46 def random_word(length) word = @dictionary.words.sample if word.length >= length word[0..length-1] else number_length = length - word.length number_length.times{ |i| word << (@params[:skip_number] ? random_symbol(i) : rand(10).to_s)} word end end