class BraceMarkup::Ast::Tags::Block

This is a block {{+name}}{{/name}}

Attributes

removed[RW]

Public Instance Methods

render(context, *args) click to toggle source
# File lib/brace_markup/ast/tags/block.rb, line 11
def render(context, *args)
  return if @removed

  blocks = @parent.find_blocks(@name, exclude: self)

  if @body.nil?
    result = ''
  else
    result = @body.render(context, *args)
  end

  blocks.each do |block|
    ctx = block.parent.context.nil? ? context : block.parent.context
    rendered = block.body.render(ctx, *args)

    case block.arguments[:mode]
      when 'append', 'after'
        result += rendered
      when 'prepend', 'before'
        result = rendered + result
      else
        # Default's to overwrite
        result = rendered
    end

    block.removed = true
  end


  result
end