class Smartdown::Engine::ConditionalResolver

Public Instance Methods

call(node, state) click to toggle source
# File lib/smartdown/engine/conditional_resolver.rb, line 4
def call(node, state)
  node.dup.tap do |new_node|
    new_node.elements = resolve_conditionals(node.elements, state)
  end
end

Private Instance Methods

evaluate(conditional, state) click to toggle source
# File lib/smartdown/engine/conditional_resolver.rb, line 11
def evaluate(conditional, state)
  if conditional.predicate.evaluate(state)
    selected_branch = conditional.true_case
  else
    selected_branch = conditional.false_case
  end
  resolve_conditionals selected_branch, state
end
resolve_conditionals(elements, state) click to toggle source
# File lib/smartdown/engine/conditional_resolver.rb, line 20
def resolve_conditionals(elements, state)
  return unless elements
  elements.map do |element|
    if element.is_a? Smartdown::Model::Element::Conditional
      evaluate(element, state)
    else
      element
    end
  end.flatten.compact
end