class FifthedSim::BlockNode

Public Class Methods

new(arg, &block) click to toggle source
# File lib/fifthed_sim/nodes/block_node.rb, line 9
def initialize(arg, &block)
  @arg = arg
  @block = block
  @current_expression = block.call(arg.value)
  @current_value = @current_expression.value
end

Public Instance Methods

distribution() click to toggle source
# File lib/fifthed_sim/nodes/block_node.rb, line 24
def distribution
  @arg.distribution.results_when(&distribution_block)
end
reroll() click to toggle source
# File lib/fifthed_sim/nodes/block_node.rb, line 20
def reroll
  self.class.new(@arg.reroll, &@block)
end
value() click to toggle source
# File lib/fifthed_sim/nodes/block_node.rb, line 16
def value
  @current_value
end
value_equation(terminal: false) click to toggle source
# File lib/fifthed_sim/nodes/block_node.rb, line 28
def value_equation(terminal: false)
  arg = @arg.value_equation(terminal: terminal)
  ce = @current_expression.value_equation(terminal: terminal)
  "blockNode(#{arg} => #{ce})"
end

Protected Instance Methods

distribution_block() click to toggle source
# File lib/fifthed_sim/nodes/block_node.rb, line 36
def distribution_block
  h = Hash[@arg.range.map do |k|
    [k, @block.call(k).distribution]
  end]
  require 'pry'
  proc do |x|
    h.fetch(x)
  end
end