lib/trocla/util.rb in trocla-0.4.0 vs lib/trocla/util.rb in trocla-0.5.0
- old
+ new
@@ -1,69 +1,80 @@
require 'securerandom'
class Trocla
+ # Utils
class Util
class << self
- def random_str(length=12, charset='default')
- _charsets = charsets[charset] || charsets['default']
- (1..length).collect{|a| _charsets[SecureRandom.random_number(_charsets.size)] }.join.to_s
+ def random_str(length = 12, charset = 'default')
+ char = charsets[charset] || charsets['default']
+ charsets_size = char.size
+ (1..length).collect { |_| char[rand_num(charsets_size)] }.join.to_s
end
- def salt(length=8)
- alphanumeric_size = alphanumeric.size
- (1..length).collect{|a| alphanumeric[SecureRandom.random_number(alphanumeric_size)] }.join.to_s
+ def salt(length = 8)
+ random_str(length, 'alphanumeric')
end
private
+ def rand_num(n)
+ SecureRandom.random_number(n)
+ end
+
def charsets
@charsets ||= begin
h = {
- 'default' => chars,
- 'alphanumeric' => alphanumeric,
- 'shellsafe' => shellsafe,
- 'windowssafe' => windowssafe,
- 'numeric' => numeric,
- 'hexadecimal' => hexadecimal,
- 'consolesafe' => consolesafe,
- 'typesafe' => typesafe,
+ 'default' => chars, 'alphanumeric' => alphanumeric, 'shellsafe' => shellsafe,
+ 'windowssafe' => windowssafe, 'numeric' => numeric, 'hexadecimal' => hexadecimal,
+ 'consolesafe' => consolesafe, 'typesafe' => typesafe
}
h.each { |k, v| h[k] = v.uniq }
end
end
def chars
@chars ||= shellsafe + special_chars
end
+
def shellsafe
@shellsafe ||= alphanumeric + shellsafe_chars
end
+
def windowssafe
@windowssafe ||= alphanumeric + windowssafe_chars
end
+
def consolesafe
@consolesafe ||= alphanumeric + consolesafe_chars
end
+
def hexadecimal
@hexadecimal ||= numeric + ('a'..'f').to_a
end
+
def alphanumeric
@alphanumeric ||= ('a'..'z').to_a + ('A'..'Z').to_a + numeric
end
+
def numeric
@numeric ||= ('0'..'9').to_a
end
+
def typesafe
@typesafe ||= ('a'..'x').to_a - ['i'] - ['l'] + ('A'..'X').to_a - ['I'] - ['L'] + ('1'..'9').to_a
end
+
def special_chars
- @special_chars ||= "*()&![]{}-".split(//)
+ @special_chars ||= '*()&![]{}-'.split(//)
end
+
def shellsafe_chars
- @shellsafe_chars ||= "+%/@=?_.,:".split(//)
+ @shellsafe_chars ||= '+%/@=?_.,:'.split(//)
end
+
def windowssafe_chars
- @windowssafe_chars ||= "+%/@=?_.,".split(//)
+ @windowssafe_chars ||= '+%/@=?_.,'.split(//)
end
+
def consolesafe_chars
@consolesafe_chars ||= '+.-,_'.split(//)
end
end
end