Module: Roda::RodaPlugins::RenderEach::InstanceMethods
- Defined in:
- lib/roda/plugins/render_each.rb
Instance Method Summary collapse
-
#render_each(enum, template, opts = (no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS)) ⇒ Object
For each value in enum, render the given template using the given opts.
Instance Method Details
#render_each(enum, template, opts = (no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS)) ⇒ Object
For each value in enum, render the given template using the given opts. The template and options hash are passed to render
. Additional options supported:
- :local
-
The local variable to use for the current enum value inside the template. An explicit
nil
value does not set a local variable. If not set, uses the template name.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/roda/plugins/render_each.rb', line 48 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 |