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), &block) ⇒ 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), &block) ⇒ 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
nilvalue does not set a local variable. If not set, uses the template name.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/roda/plugins/render_each.rb', line 109 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 |