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