Module: Roda::RodaPlugins::Render::InstanceMethods
- Defined in:
- lib/roda/plugins/render.rb
Instance Method Summary collapse
-
#render(template, opts = (no_opts = true; optimized_template = _cached_template_method(template); OPTS), &block) ⇒ Object
(also: #render_template)
Render the given template.
-
#render_opts ⇒ Object
Return the render options for the instance’s class.
-
#view(template, opts = (yield); OPTS), &block) ⇒ Object
Render the given template.
Instance Method Details
#render(template, opts = (no_opts = true; optimized_template = _cached_template_method(template); OPTS), &block) ⇒ Object Also known as: render_template
Render the given template. See Render for details.
493 494 495 496 497 498 499 500 501 502 |
# File 'lib/roda/plugins/render.rb', line 493 def render(template, opts = (no_opts = true; optimized_template = _cached_template_method(template); OPTS), &block) if optimized_template send(optimized_template, OPTS, &block) elsif !no_opts && opts.length == 1 && (locals = opts[:locals]) && (optimized_template = _optimized_render_method_for_locals(template, locals)) send(optimized_template, locals, &block) else opts = render_template_opts(template, opts) retrieve_template(opts).render((opts[:scope]||self), (opts[:locals]||OPTS), &block) end end |
#render_opts ⇒ Object
Return the render options for the instance’s class.
505 506 507 |
# File 'lib/roda/plugins/render.rb', line 505 def render_opts self.class.render_opts end |
#view(template, opts = (yield); OPTS), &block) ⇒ Object
Render the given template. If there is a default layout for the class, take the result of the template rendering and render it inside the layout. Blocks passed to view are passed to render when rendering the template. See Render for details.
514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'lib/roda/plugins/render.rb', line 514 def view(template, opts = (content = _optimized_view_content(template) unless defined?(yield); OPTS), &block) if content # First, check if the optimized layout method has already been created, # and use it if so. This way avoids the extra conditional and local variable # assignments in the next section. if layout_method = _layout_method return send(layout_method, OPTS){content} end # If we have an optimized template method but no optimized layout method, create the # optimized layout method if possible and use it. If you can't create the optimized # layout method, fall through to the slower approach. if layout_template = self.class.opts[:render][:optimize_layout] retrieve_template(:template=>layout_template, :cache_key=>nil, :template_method_cache_key => :_roda_layout) if layout_method = _layout_method return send(layout_method, OPTS){content} end end else opts = parse_template_opts(template, opts) content = opts[:content] || render_template(opts, &block) end if layout_opts = view_layout_opts(opts) content = render_template(layout_opts){content} end content end |