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) :-