Public Instance methods
render_each(enum, template, opts=(no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS), &block)
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 |
[show source]
# File lib/roda/plugins/render_each.rb 80 def render_each(enum, template, opts=(no_opts = true; optimized_template = _cached_render_each_template_method(template); OPTS), &block) 81 if optimized_template 82 return _optimized_render_each(enum, optimized_template, render_each_default_local(template), {}, &block) 83 elsif opts.has_key?(:local) 84 as = opts[:local] 85 else 86 as = render_each_default_local(template) 87 if no_opts && optimized_template.nil? && (optimized_template = _optimized_render_method_for_locals(template, (locals = {as=>nil}))) 88 return _optimized_render_each(enum, optimized_template, as, locals, &block) 89 end 90 end 91 92 if as 93 opts = opts.dup 94 if locals 95 opts[:locals] = locals 96 else 97 locals = opts[:locals] = if locals = opts[:locals] 98 Hash[locals] 99 else 100 {} 101 end 102 locals[as] = nil 103 end 104 105 if (opts.keys - ALLOWED_KEYS).empty? && (optimized_template = _optimized_render_method_for_locals(template, locals)) 106 return _optimized_render_each(enum, optimized_template, as, locals, &block) 107 end 108 end 109 110 if defined?(yield) 111 enum.each do |v| 112 locals[as] = v if as 113 yield render_template(template, opts) 114 end 115 nil 116 else 117 enum.map do |v| 118 locals[as] = v if as 119 render_template(template, opts) 120 end.join 121 end 122 end