Class: RMathGuard::Expression

Inherits:
Object
  • Object
show all
Defined in:
lib/rmathguard/expression.rb

Constant Summary collapse

OPERANDS =
%w[ZERO ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE]
OPERATORS =
{"+" => "PLUS",
"-" => "MINUS"}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Expression

Returns a new instance of Expression.



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rmathguard/expression.rb', line 9

def initialize(options = {})
  @max_value = options[:max_value] || 10
  @row_count = options[:row_count] || 5
  @col_count = options[:col_count] || options[:column_count] || 3
  @sep_size  = options[:sep_size]  || 2
    @negative  = options[:negative] || false

    unless @row_count == 5 && @col_count == 3
      RMathGuard::Numbers.resize(@row_count, @col_count)
      RMathGuard::Operators.resize(@row_count, @col_count)
    end
  generate
end

Instance Attribute Details

#resultObject (readonly)

Returns the value of attribute result.



7
8
9
# File 'lib/rmathguard/expression.rb', line 7

def result
  @result
end

Instance Method Details

#showObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rmathguard/expression.rb', line 23

def show
  n = RMathGuard::Numbers
  op1 = n.const_get(OPERANDS[@operand1]).masked
  op2 = n.const_get(OPERANDS[@operand2]).masked
    o = RMathGuard::Operators
  sign = o.const_get(OPERATORS[@operator]).masked
  eq = o::EQUALS.masked

  result = []
  (0...@row_count).each do |row|
    result[row] = []
    result[row] << op1[row]
    @sep_size.times { result[row] << 0 }
    result[row] << sign[row]
    @sep_size.times { result[row] << 0 }
    result[row] << op2[row]
    @sep_size.times { result[row] << 0 }
    result[row] << eq[row]
    result[row].flatten!
  end
  result.map { |row| row.join("") }.join("\n").tr("0", " ")
end