Module: Random::String::Self

Defined in:
lib/gems/facets-2.4.5/lib/more/facets/random.rb

Overview

Class-level methods.

Instance Method Summary collapse

Instance Method Details

#rand_letterObject

Module method to generate a random letter.

String::Random.rand_letter  #=> "q"
String::Random.rand_letter  #=> "r"
String::Random.rand_letter  #=> "a"


355
356
357
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 355

def rand_letter
  (Random.number(26) + (Random.number(2) == 0 ? 65 : 97) ).chr
end

#random(max_length = 8, char_re = /[\w\d]/) ⇒ Object

Returns a randomly generated string. One possible use is password initialization. Takes a max legnth of characters (default 8) and an optional valid char Regexp (default /\w\d/).

-- CREDIT George Moschovitis

NOTE This is not very efficient. Better way? ++

Raises:

  • (ArgumentError)


336
337
338
339
340
341
342
343
344
345
346
347
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 336

def random(max_length = 8, char_re = /[\w\d]/)
  # gmosx: this is a nice example of input parameter checking.
  # this is NOT a real time called method so we can add this
  # check. Congrats to the author.
  raise ArgumentError.new('char_re must be a regular expression!') unless char_re.is_a?(Regexp)
  string = ""
  while string.length < max_length
      ch = Random.number(255).chr
      string << ch if ch =~ char_re
  end
  return string
end