class Bytewise::Ast::Expression
Public Class Methods
new(parts)
click to toggle source
# File lib/brace_markup/ast/expression.rb, line 4 def initialize(parts) @parts = parts end
Public Instance Methods
render(context)
click to toggle source
# File lib/brace_markup/ast/expression.rb, line 8 def render(context) parts = @parts.clone last_value = render_part(parts.shift, context) parts.each_with_index do |part, i| next_part = parts[i + 1] next if i % 2 == 1 if part.is_a? Operators::Operator if part.is_a? Operators::LogicalAnd return false unless last_value last_value = render_part(next_part, context) elsif part.is_a? Operators::LogicalOr return true if last_value last_value = render_part(next_part, context) else last_value = part.evaluate(last_value, render_part(next_part, context)) end else raise Exception.new("Parts have to be connected by an Operator") end end last_value end
render_part(part, *args)
click to toggle source
# File lib/brace_markup/ast/expression.rb, line 38 def render_part(part, *args) if part.is_a? Node part.render(*args) else part end end