lib/anybase.rb in anybase-0.0.14 vs lib/anybase.rb in anybase-0.0.15
- old
+ new
@@ -1,6 +1,7 @@
require "anybase/version"
+require "securerandom"
class Anybase
UnrecognizedCharacterError = Class.new(RuntimeError)
@@ -22,11 +23,11 @@
@chars.split('').each_with_index do |c, i|
regexp_str << Regexp.quote(c)
add_mapping(c, i)
@num_map[i] = c
if @synonyms && @synonyms[c]
- @synonyms[c].split('').each { |sc|
+ @synonyms[c].split('').each { |sc|
regexp_str << Regexp.quote(sc)
@synonyms_tr[1] << c
@synonyms_tr[0] << sc
}
end
@@ -44,30 +45,30 @@
end
def ignore_case?
@ignore_case
end
-
+
def size(digits)
chars.length ** digits
end
-
+
def normalize(val)
val = val.downcase if ignore_case?
@synonyms ? val.tr(*@synonyms_tr) : val
end
def random(digits, opts = nil)
zero_pad = opts && opts.key?(:zero_pad) ? opts[:zero_pad] : true
number = ''
- digits.times { number << chars[rand(chars.size)]}
+ digits.times { number << chars[SecureRandom.random_number(chars.size)]}
unless zero_pad
number.sub!(/\A#{Regexp.quote(chars[0].chr)}+/, '')
number = chars[0].chr if number.empty?
end
number
end
-
+
def to_i(val)
val = normalize(val)
op = if @sign and val[0] == @sign[0]
val.slice!(0, 1)
:-