class MathCaptcha::Captcha
Public Class Methods
new()
click to toggle source
# File lib/math_captcha.rb, line 22 def initialize @numbers = [0,1,2,3,4,5,6,7,8,9] @numbers_alpha = { 'es' => { 0 => 'cero', 1 => 'uno', 2 => 'dos', 3 => 'tres', 4 => 'cuatro', 5 => 'cinco', 6 => 'seis', 7 => 'siete', 8 => 'ocho', 9 => 'nueve' }, 'eu' => { 0 => 'huts', 1 => 'bat', 2 => 'bi', 3 => 'hiru', 4 => 'lau', 5 => 'bost', 6 => 'sei', 7 => 'zazpi', 8 => 'zortzi', 9 => 'bederatzi' }, 'en' => { 0 => 'zero', 1 => 'one', 2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five', 6 => 'six', 7 => 'seven', 8 => 'eight', 9 => 'nine' } } # temporary remove division operation @ops = { 'es' => { '+' => 'más', '-' => 'menos', '*' => 'por' }, 'eu' => { '+' => 'gehi', '-' => 'ken', '*' => 'bider' }, 'en' => { '+' => 'plus', '-' => 'minus', '*' => 'times' } } end
Public Instance Methods
build_challenge(options={})
click to toggle source
# File lib/math_captcha.rb, line 89 def build_challenge(options={}) # loop to prevent negative numbers begin digit1 = @numbers[rand(9)] digit2 = @numbers[rand(9)] op = @ops[locale].keys[rand(3)] value = eval("#{digit1}#{op}#{digit2}") end while value < 0 encrypted = MathCaptcha::Utils.generate_key(value) question = "#{@numbers_alpha[locale][digit1]} #{@ops[locale][op]} #{@numbers_alpha[locale][digit2]}" challenge = Challenge.new(question, value, encrypted, options) return challenge end
locale()
click to toggle source
# File lib/math_captcha.rb, line 84 def locale return @locale unless @locale.nil? @locale = I18n.locale.to_s || I18n.default_locale.to_s || 'es' end