Class: PassForge::Pattern

Inherits:
Object
  • Object
show all
Defined in:
lib/passforge/pattern.rb

Overview

Pattern-based password generator Generate passwords based on custom patterns

Class Method Summary collapse

Class Method Details

.generate(pattern) ⇒ String

Generate password from pattern

Pattern characters:

  • C = uppercase letter

  • c = lowercase letter

  • v = lowercase vowel

  • V = uppercase vowel

  • 9 = digit

  • ! = symbol

  • Any other character = literal

Examples:

Generate from pattern

PassForge::Pattern.generate("Cvccvc99!")
# => "Rabmit42!"

Parameters:

  • pattern (String)

    Pattern string

Returns:

  • (String)

    Generated password

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/passforge/pattern.rb', line 27

def self.generate(pattern)
  raise ArgumentError, "Pattern cannot be empty" if pattern.nil? || pattern.empty?
  
  result = []
  
  pattern.each_char do |char|
    result << case char
              when 'C'
                Charsets::UPPER_CASE.sample
              when 'c'
                Charsets::LOWER_CASE.sample
              when 'v'
                Pronounceable::VOWELS.sample
              when 'V'
                Pronounceable::VOWELS.sample.upcase
              when '9'
                Charsets::NUMBERS.sample
              when '!'
                Charsets::SYMBOLS.sample
              else
                char # Literal character
              end
  end
  
  result.join
end