Sha256: 2929d3c693dd64777df1f588dbfa46a7df3540969d18c9741b655e7576e38eb9

Contents?: true

Size: 927 Bytes

Versions: 3

Compression:

Stored size: 927 Bytes

Contents

module Gluttonberg
  class RandomStringGenerator
    SIMILAR_CHARS = %w{ i I 1 0 O o 5 S s }
    def self.generate(length=10)
      newpass  = self.generate_lowercase_string(1)
      newpass += self.generate_uppercase_string(length-2)
      newpass += self.generate_number_string(1)
      newpass
    end

    private
      def self.generate_lowercase_string(length)
        self.generate_string_for(("a".."z").to_a, length)
      end

      def self.generate_uppercase_string(length)
        self.generate_string_for(("A".."Z").to_a, length)
      end

      def self.generate_number_string(length)
        self.generate_string_for(("0".."9").to_a, length)
      end

      def self.generate_string_for(character_set, length)
        newstr = ""
        character_set.delete_if {|x| SIMILAR_CHARS.include? x}
        1.upto(length) { |i| newstr << character_set[rand(character_set.size-1)] }
        newstr
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gluttonberg-core-3.0.2 lib/gluttonberg/random_string_generator.rb
gluttonberg-core-3.0.1 lib/gluttonberg/random_string_generator.rb
gluttonberg-core-3.0.0 lib/gluttonberg/random_string_generator.rb