class Mistaker::Number
Public Instance Methods
mistake(err_type = rand.rand(NUMBER_MAX), index = nil)
click to toggle source
# File lib/mistaker/number.rb, line 7 def mistake(err_type = rand.rand(NUMBER_MAX), index = nil) @str = reformat(@str) @length = @str.length index ||= rand.rand(@length) n = @str[index].to_i case err_type when ONE_DIGIT_UP n += 1 when ONE_DIGIT_DOWN n -= 1 when KEY_SWAP a, b = @str[index], @str[(index - 1).abs] @str[index], @str[(index - 1).abs] = b, a return str when NUMERIC_KEY_PAD n = TEN_KEYS[n.to_s].to_i when DIGIT_SHIFT if index >= @length return '0' * @length else return ('0' * index + @str)[0...@length] end when MISREAD n = MISREAD_NUMBERS[n.to_s].to_i end @str[index] = n.abs.to_s @str end
reformat(str)
click to toggle source
# File lib/mistaker/number.rb, line 3 def reformat(str) str.to_s.tr('^0-9', '') end