module Uniqueness
Constants
- VERSION
Public Class Methods
generate(opts = {})
click to toggle source
# File lib/uniqueness/generator.rb, line 5 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 dict = uniqueness_numbers_dictionary if options[:type].to_sym == :numbers code = Array.new(options[:length]).map { dict[SecureRandom.random_number(dict.length)] }.join "#{options[:prefix]}#{code}#{options[:suffix]}" end
uniqueness_ambigious_dictionary()
click to toggle source
# File lib/uniqueness/generator.rb, line 21 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_options()
click to toggle source
Default sorting options
# File lib/uniqueness/generator.rb, line 30 def uniqueness_default_options { length: 32, type: :auto, blacklist: [], scope: [], suffix: '', prefix: '', trigger_on: :before_validation } end
uniqueness_dictionary()
click to toggle source
Dictionary used for uniqueness generation
# File lib/uniqueness/generator.rb, line 17 def uniqueness_dictionary [*(:A..:Z), *(:a..:z), *(0..9)].map(&:to_s) end
uniqueness_numbers_dictionary()
click to toggle source
# File lib/uniqueness/generator.rb, line 25 def uniqueness_numbers_dictionary [*(0..9)].map(&:to_s) end