Sha256: 9a499cc1478f75f1b40e4f4ab15697255eb7f4f6699938a904a54afdea0fa4c4

Contents?: true

Size: 888 Bytes

Versions: 1

Compression:

Stored size: 888 Bytes

Contents

module Uniqueness
  class << self
    def generate(opts = {})
      options ||= {}
      options = uniqueness_default_options.merge(opts)
      dict = uniqueness_dictionary - options[:blacklist]
      dict -= [*(:A..:Z)].map(&:to_s) unless options[:case_sensitive]
      dict -= uniqueness_ambigious_dictionary if options[:type].to_sym == :human
      Array.new(options[:length]).map { dict[rand(dict.length)] }.join
    end

    # Dictionary used for uniqueness generation
    def uniqueness_dictionary
      [*(:A..:Z), *(:a..:z), *(0..9)].map(&:to_s)
    end

    def uniqueness_ambigious_dictionary
      [:b, :B, :o, :O, :q, :i, :I, :l, :L, :s, :S, :u, :U, :z, :Z, :g, 1, 2, 9, 5].map(&:to_s)
    end

    # Default sorting options
    def uniqueness_default_options
      {
        length: 32,
        type: :auto,
        blacklist: [],
        scope: []
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
uniqueness-0.7.0 lib/uniqueness/generator.rb