module Mongoid::Token::Generator
Constants
- REPLACE_PATTERN
Public Class Methods
generate(pattern)
click to toggle source
# File lib/mongoid/token/generator.rb, line 17 def self.generate(pattern) pattern.gsub REPLACE_PATTERN do |match| match_data = $~ type = match_data[:character] length = [match_data[:length].to_i, 1].max case type when 'c' down_character(length) when 'C' up_character(length) when 'd' digits(length) when 'D' integer(length) when 'h' digits(length, 16) when 'H' integer(length, 16) when 's' alphanumeric(length) when 'w' alpha(length) when 'p' "-" end end end
Private Class Methods
alpha(length = 1)
click to toggle source
# File lib/mongoid/token/generator.rb, line 67 def self.alpha(length = 1) self.rand_string_from_chars (('A'..'Z').to_a + ('a'..'z').to_a), length end
alphanumeric(length = 1)
click to toggle source
# File lib/mongoid/token/generator.rb, line 71 def self.alphanumeric(length = 1) (1..length).collect { (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }.join end
digits(length = 1, base = 10)
click to toggle source
# File lib/mongoid/token/generator.rb, line 63 def self.digits(length = 1, base = 10) rand(base**length).to_s(base).rjust(length, "0") end
down_character(length = 1)
click to toggle source
# File lib/mongoid/token/generator.rb, line 51 def self.down_character(length = 1) self.rand_string_from_chars ('a'..'z').to_a, length end
integer(length = 1, base = 10)
click to toggle source
# File lib/mongoid/token/generator.rb, line 59 def self.integer(length = 1, base = 10) (rand(base**length - base**(length-1)) + base**(length-1)).to_s(base) end
punctuation(length = 1)
click to toggle source
# File lib/mongoid/token/generator.rb, line 75 def self.punctuation(length = 1) self.rand_string_from_chars ['.','-','_','=','+','$'], length end
rand_string_from_chars(chars, length = 1)
click to toggle source
# File lib/mongoid/token/generator.rb, line 47 def self.rand_string_from_chars(chars, length = 1) Array.new(length).map{ chars.sample }.join end
up_character(length = 1)
click to toggle source
# File lib/mongoid/token/generator.rb, line 55 def self.up_character(length = 1) self.rand_string_from_chars ('A'..'Z').to_a, length end