Class: BCDice::CommonCommand::AddDice::Node::BinaryOp

Inherits:
Object
  • Object
show all
Defined in:
lib/bcdice/common_command/add_dice/node.rb

Overview

二項演算子のノード

Direct Known Subclasses

DivideBase

Instance Method Summary collapse

Constructor Details

#initialize(lhs, op, rhs) ⇒ BinaryOp

ノードを初期化する

Parameters:

  • lhs (Object)

    左のオペランドのノード

  • op (Symbol)

    演算子

  • rhs (Object)

    右のオペランドのノード



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

ノードを評価する

左右のオペランドをそれぞれ再帰的に評価した後で、演算を行う。

Parameters:

Returns:

  • (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

文字列に変換する

Returns:

  • (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

Returns:

  • (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

#outputString

メッセージへの出力を返す

Returns:

  • (String)


162
163
164
# File 'lib/bcdice/common_command/add_dice/node.rb', line 162

def output
  "#{@lhs.output}#{@op}#{@rhs.output}"
end

#s_expString

ノードのS式を返す

Returns:

  • (String)


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