class Glimmer::Calculator::Command

Attributes

number1[RW]
number2[RW]
operation[RW]
button[R]
result[RW]

Public Class Methods

command_history() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 26
def command_history
  @command_history ||= []
end
for(button) click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 30
def for(button)
  command_class = keyword_to_command_class_mapping[button]
  command_class&.new(button)&.tap do |command|
    command.execute
    command_history << command
  end
end
keyword(keyword_text) click to toggle source

Keyword string representing calculator command (e.g. '+' for Add command) Subclasses must call to define a single keyword

# File lib/models/glimmer/calculator/command.rb, line 10
def keyword(keyword_text)         
  Command.keyword_to_command_class_mapping[keyword_text] = self
end
keyword_to_command_class_mapping() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 22
def keyword_to_command_class_mapping
  @keyword_to_command_class_mapping ||= {}
end
keywords(*keyword_text_array) click to toggle source

Keyword string array representing calculator command (e.g. ('0'..'9').to_a) Subclasses must call to define multiple keywords

# File lib/models/glimmer/calculator/command.rb, line 16
def keywords(*keyword_text_array)
  keyword_text_array.flatten.each do |keyword_text|
    keyword(keyword_text)
  end
end
new(button) click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 42
def initialize(button)
  @button = button
end

Public Instance Methods

command_history() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 78
def command_history
  Command.command_history
end
execute() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 82
def execute
  raise 'Not implemented! Please override in a subclass.'
end
last_command() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 74
def last_command
  command_history.last
end
last_result() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 70
def last_result
  last_command&.result
end
number1() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 46
def number1
  Command.number1
end
number1=(value) click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 50
def number1=(value)
  Command.number1 = value.to_f
end
number2() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 54
def number2
  Command.number2
end
number2=(value) click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 58
def number2=(value)
  Command.number2 = value.to_f
end
operation() click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 62
def operation
  Command.operation
end
operation=(op) click to toggle source
# File lib/models/glimmer/calculator/command.rb, line 66
def operation=(op)
  Command.operation = op
end