module Roda::RodaPlugins::RenderEach::InstanceMethods

def render_each(enum, template, opts=(no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS), &block)

set a local variable. If not set, uses the template name.
inside the template. An explicit +nil+ value does not
:local :: The local variable to use for the current enum value
Additional options supported:
given opts. The template and options hash are passed to +render+.
For each value in enum, render the given template using the
def render_each(enum, template, opts=(no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS), &block)
  if optimized_template
    return _optimized_render_each(enum, optimized_template, render_each_default_local(template), {}, &block)
  elsif opts.has_key?(:local)
    as = opts[:local]
  else
    as = render_each_default_local(template)
    if no_opts && optimized_template.nil? && (optimized_template = _optimized_render_method_for_locals(template, (locals = {as=>nil})))
      return _optimized_render_each(enum, optimized_template, as, locals, &block)
    end
  end
  if as
    opts = opts.dup
    if locals
      opts[:locals] = locals
    else
      locals = opts[:locals] = if locals = opts[:locals]
        Hash[locals]
      else
        {}
      end
      locals[as] = nil
    end
    if (opts.keys - ALLOWED_KEYS).empty? && (optimized_template = _optimized_render_method_for_locals(template, locals))
      return _optimized_render_each(enum, optimized_template, as, locals, &block)
    end
  end
  if defined?(yield)
    enum.each do |v|
      locals[as] = v if as
      yield render_template(template, opts)
    end
    nil
  else
    enum.map do |v|
      locals[as] = v if as
      render_template(template, opts)
    end.join
  end
end