Class: BCDice::CommonCommand::AddDice::Node::BinaryOp
- Inherits:
-
Object
- Object
- BCDice::CommonCommand::AddDice::Node::BinaryOp
- Defined in:
- lib/bcdice/common_command/add_dice/node.rb
Overview
二項演算子のノード
Direct Known Subclasses
Instance Method Summary collapse
-
#eval(game_system, randomizer) ⇒ Integer
ノードを評価する.
-
#expr(game_system) ⇒ String
文字列に変換する.
- #include_dice? ⇒ Boolean
-
#initialize(lhs, op, rhs) ⇒ BinaryOp
constructor
ノードを初期化する.
-
#output ⇒ String
メッセージへの出力を返す.
-
#s_exp ⇒ String
ノードのS式を返す.
Constructor Details
#initialize(lhs, op, rhs) ⇒ BinaryOp
ノードを初期化する
126 127 128 129 130 |
# File 'lib/bcdice/common_command/add_dice/node.rb', line 126 def initialize(lhs, op, rhs) @lhs = lhs @op = op @rhs = rhs end |
Instance Method Details
#eval(game_system, randomizer) ⇒ Integer
ノードを評価する
左右のオペランドをそれぞれ再帰的に評価した後で、演算を行う。
139 140 141 142 143 144 |
# File 'lib/bcdice/common_command/add_dice/node.rb', line 139 def eval(game_system, randomizer) lhs = @lhs.eval(game_system, randomizer) rhs = @rhs.eval(game_system, randomizer) return calc(lhs, rhs, game_system.round_type) end |
#expr(game_system) ⇒ String
文字列に変換する
153 154 155 156 157 158 |
# File 'lib/bcdice/common_command/add_dice/node.rb', line 153 def expr(game_system) lhs = @lhs.expr(game_system) rhs = @rhs.expr(game_system) "#{lhs}#{@op}#{rhs}" end |
#include_dice? ⇒ Boolean
147 148 149 |
# File 'lib/bcdice/common_command/add_dice/node.rb', line 147 def include_dice? @lhs.include_dice? || @rhs.include_dice? end |
#output ⇒ String
メッセージへの出力を返す
162 163 164 |
# File 'lib/bcdice/common_command/add_dice/node.rb', line 162 def output "#{@lhs.output}#{@op}#{@rhs.output}" end |
#s_exp ⇒ String
ノードのS式を返す
168 169 170 |
# File 'lib/bcdice/common_command/add_dice/node.rb', line 168 def s_exp "(#{op_for_s_exp} #{@lhs.s_exp} #{@rhs.s_exp})" end |