From 9f4ed0d69b2001b66e7da9f675c166599c38cc7b Mon Sep 17 00:00:00 2001 From: jacoyutorius Date: Mon, 23 Jun 2025 22:31:26 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E3=82=B8=E3=82=A7=E3=83=8D=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=83=BC=E3=82=92=E6=94=B9=E4=BF=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - パスワードに利用するFakerのカテゴリーを増やした - 単語の一部の文字を大文字に変換した - 数値が末尾だけでなく、ランダムな位置に配置されるようにした --- lib/passfaker/generator.rb | 19 ++++++++++++++++--- spec/passfaker_spec.rb | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/passfaker/generator.rb b/lib/passfaker/generator.rb index dd2a00e..84c94af 100644 --- a/lib/passfaker/generator.rb +++ b/lib/passfaker/generator.rb @@ -12,17 +12,30 @@ module Generator -> { Faker::Creature::Animal.name }, -> { Faker::Food.ingredient }, -> { Faker::Games::Pokemon.name }, - -> { Faker::Music.instrument } + -> { Faker::Music.instrument }, + -> { Faker::Superhero.name }, + -> { Faker::Music.genre } ].freeze def self.generate(word_count:, separator:, include_number:) words = word_count.times.map do generator = CATEGORIES[SecureRandom.random_number(CATEGORIES.size)] - generator.call.downcase.gsub(/\s+/, "-") + word = generator.call.downcase.gsub(/\s+/, "") + random_char_upcase(word) end words << ::SecureRandom.random_number(100).to_s if include_number - words.join(separator) + words.shuffle.join(separator) + end + + # ランダムな文字を大文字に変換する + def self.random_char_upcase(word) + return word if word.empty? + + chars = word.chars + index = SecureRandom.random_number(chars.size) + chars[index] = chars[index].upcase + chars.join end end end diff --git a/spec/passfaker_spec.rb b/spec/passfaker_spec.rb index 2edd00a..f5afaa6 100644 --- a/spec/passfaker_spec.rb +++ b/spec/passfaker_spec.rb @@ -20,7 +20,7 @@ it "includes a number when include_number is true" do password = Passfaker.generate(include_number: true) - expect(password).to match(/\d+$/) + expect(password).to match(/\d+/) end end end From 9a504a7a59593efaaa3d7151424ec8989fec7f0a Mon Sep 17 00:00:00 2001 From: jacoyutorius Date: Mon, 23 Jun 2025 22:32:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E3=82=A4=E3=83=B3=E3=82=AF=E3=83=AA=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 2 +- lib/passfaker/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index efca204..605512e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - passfaker (0.1.0) + passfaker (0.2.0) faker (~> 2.0) GEM diff --git a/lib/passfaker/version.rb b/lib/passfaker/version.rb index 165a7f4..a60b292 100644 --- a/lib/passfaker/version.rb +++ b/lib/passfaker/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Passfaker - VERSION = "0.1.0" + VERSION = "0.2.0" end