From 6eba28a3e4a7c01cc91f8bbcb8e66a10d9e2b736 Mon Sep 17 00:00:00 2001 From: Michal Bru Date: Sat, 29 Apr 2023 19:02:12 +0200 Subject: [PATCH] Speed up Internet::Password generation using constants --- lib/faker/default/internet.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/faker/default/internet.rb b/lib/faker/default/internet.rb index 133be68142..af6b0bb444 100644 --- a/lib/faker/default/internet.rb +++ b/lib/faker/default/internet.rb @@ -183,27 +183,27 @@ def password(min_length: 8, max_length: 16, mix_case: true, special_characters: character_bag = [] # use lower_chars by default and add upper_chars if mix_case - lower_chars = ('a'..'z').to_a - password << lower_chars[rand(lower_chars.count - 1)] + lower_chars = self::LLetters + password << sample(lower_chars) character_bag += lower_chars digits = ('0'..'9').to_a - password << digits[rand(digits.count - 1)] + password << sample(digits) character_bag += digits - if character_types.include?(:mix_case) - upper_chars = ('A'..'Z').to_a - password << upper_chars[rand(upper_chars.count - 1)] + if mix_case + upper_chars = self::ULetters + password << sample(upper_chars) character_bag += upper_chars end - if character_types.include?(:special_characters) + if special_characters special_chars = %w[! @ # $ % ^ & *] - password << special_chars[rand(special_chars.count - 1)] + password << sample(special_chars) character_bag += special_chars end - password << character_bag[rand(character_bag.count - 1)] while password.length < target_length + password << sample(character_bag) while password.length < target_length shuffle(password).join end