class TPPlus::Nodes::InlineConditionalNode

Attributes

condition_node[R]

Public Class Methods

new(type, condition, block) click to toggle source
# File lib/tp_plus/nodes/inline_conditional_node.rb, line 5
def initialize(type, condition, block)
  @type           = type
  @condition_node = condition
  @block          = block
end

Public Instance Methods

block_requires_mixed_logic?(context) click to toggle source
# File lib/tp_plus/nodes/inline_conditional_node.rb, line 17
def block_requires_mixed_logic?(context)
  @block.requires_mixed_logic?(context)
end
condition(context,options={}) click to toggle source
# File lib/tp_plus/nodes/inline_conditional_node.rb, line 21
def condition(context,options={})
  options[:opposite] ||= @type == "unless"

  if condition_requires_mixed_logic?(context) || block_requires_mixed_logic?(context)
    "(#{@condition_node.eval(context, options)})"
  else
    @condition_node.eval(context, options)
  end
end
condition_requires_mixed_logic?(context) click to toggle source
# File lib/tp_plus/nodes/inline_conditional_node.rb, line 11
def condition_requires_mixed_logic?(context)
  @condition_node.is_a?(VarNode) ||
    @condition_node.is_a?(NamespacedVarNode) ||
    @condition_node.requires_mixed_logic?(context)
end
eval(context) click to toggle source
# File lib/tp_plus/nodes/inline_conditional_node.rb, line 31
def eval(context)
  "IF #{condition(context)},#{@block.eval(context,mixed_logic:true)}"
end