Method: Faker::Alphanumeric.alphanumeric

Defined in:
lib/faker/default/alphanumeric.rb

.alphanumeric(number: 32, min_alpha: 0, min_numeric: 0) ⇒ String

Produces a random string of alphanumeric characters

Examples:

Faker::Alphanumeric.alphanumeric(number: 10) #=> "3yfq2phxtb"
Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3) #=> "3yfq2phxtb"
Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3, min_numeric: 3) #=> "3yfq2phx8b"

Parameters:

  • number (Integer) (defaults to: 32)

    The number of characters to generate

  • min_alpha (Integer) (defaults to: 0)

    The minimum number of alphabetic to add to the string

  • min_numeric (Integer) (defaults to: 0)

    The minimum number of numbers to add to the string

Returns:

  • (String)

Raises:

  • (ArgumentError)

Available since:

  • 2.1.3



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/faker/default/alphanumeric.rb', line 46

def alphanumeric(number: 32, min_alpha: 0, min_numeric: 0)
  char_count = resolve(number)
  return '' if char_count.to_i < 1
  raise ArgumentError, 'min_alpha must be greater than or equal to 0' if min_alpha&.negative?
  raise ArgumentError, 'min_numeric must be greater than or equal to 0' if min_numeric&.negative?

  return Array.new(char_count) { sample(ALPHANUMS) }.join if min_alpha.zero? && min_numeric.zero?

  raise ArgumentError, 'min_alpha + min_numeric must be <= number' if min_alpha + min_numeric > char_count

  random_count = char_count - min_alpha - min_numeric

  alphas = Array.new(min_alpha) { sample(self::LLetters) }
  numbers = Array.new(min_numeric) { sample(self::Numbers) }
  randoms = Array.new(random_count) { sample(ALPHANUMS) }

  combined = alphas + numbers + randoms
  shuffle!(combined).join
end