Module: Uniqueness

Defined in:
lib/uniqueness/model.rb,
lib/uniqueness/engine.rb,
lib/uniqueness/version.rb,
lib/uniqueness/generator.rb

Defined Under Namespace

Modules: Model Classes: Engine

Constant Summary collapse

VERSION =
'0.7.0'.freeze

Class Method Summary collapse

Class Method Details

.generate(opts = {}) ⇒ Object



3
4
5
6
7
8
9
10
# File 'lib/uniqueness/generator.rb', line 3

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

.uniqueness_ambigious_dictionaryObject



17
18
19
# File 'lib/uniqueness/generator.rb', line 17

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

.uniqueness_default_optionsObject

Default sorting options



22
23
24
25
26
27
28
29
# File 'lib/uniqueness/generator.rb', line 22

def uniqueness_default_options
  {
    length: 32,
    type: :auto,
    blacklist: [],
    scope: []
  }
end

.uniqueness_dictionaryObject

Dictionary used for uniqueness generation



13
14
15
# File 'lib/uniqueness/generator.rb', line 13

def uniqueness_dictionary
  [*(:A..:Z), *(:a..:z), *(0..9)].map(&:to_s)
end