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 = opts[:locals] 95 locals = opts[:locals] = Hash[locals] 96 else 97 locals = opts[:locals] = {} 98 end 99 locals[as] = nil 100 101 if (opts.keys - ALLOWED_KEYS).empty? && (optimized_template = _optimized_render_method_for_locals(template, locals)) 102 return _optimized_render_each(enum, optimized_template, as, locals, &block) 103 end 104 end 105 106 if defined?(yield) 107 enum.each do |v| 108 locals[as] = v if as 109 yield render_template(template, opts) 110 end 111 nil 112 else 113 enum.map do |v| 114 locals[as] = v if as 115 render_template(template, opts) 116 end.join 117 end 118 end