module Roda::RodaPlugins::RenderEach::InstanceMethods

def _cached_render_each_template_method(template)

been explicitly disabled. Otherwise return nil.
a string or symbol, or if compiled method support for this template has
method name to call to render the template. Return false if not given
If compiled method support is enabled in the render plugin, return the
def _cached_render_each_template_method(template)
  case template
  when String, Symbol
    if (method_cache = render_opts[:template_method_cache])
      _cached_template_method_lookup(method_cache, [:_render_locals, template, [template.to_sym]])
    end
  else
    false
  end
end

def _cached_render_each_template_method(template)

def _cached_render_each_template_method(template)
  nil
end

def _optimized_render_each(enum, optimized_template, as, locals)

Use an optimized render for each value in the enum.
def _optimized_render_each(enum, optimized_template, as, locals)
  enum.map do |v|
    locals[as] = v
    send(optimized_template, locals)
  end.join
end

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

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))
  if optimized_template
    return _optimized_render_each(enum, optimized_template, render_each_default_local(template), {})
  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)
    end
  end
  if as
    opts = opts.dup
    if locals = opts[:locals]
      locals = opts[:locals] = Hash[locals]
    else
      locals = opts[:locals] = {}
    end
    locals[as] = nil
    if (opts.keys - ALLOWED_KEYS).empty? && (optimized_template = _optimized_render_method_for_locals(template, locals))
      return _optimized_render_each(enum, optimized_template, as, locals)
    end
  end
  enum.map do |v|
    locals[as] = v if as
    render_template(template, opts)
  end.join
end

def render_each_default_local(template)

is not used when calling render_each.
The default local variable name to use for the template, if the :local option
def render_each_default_local(template)
  File.basename(template.to_s).sub(/\..+\z/, '').to_sym
end