mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
0134ca6a01
Since now these objects are not cached anymore, there's no need to have these private methods, just instantiate each of them in the necessary place.
44 lines
1.4 KiB
Ruby
44 lines
1.4 KiB
Ruby
module ActionView
|
|
# This is the main entry point for rendering. It basically delegates
|
|
# to other objects like TemplateRenderer and PartialRenderer which
|
|
# actually renders the template.
|
|
class Renderer
|
|
attr_accessor :lookup_context
|
|
|
|
def initialize(lookup_context)
|
|
@lookup_context = lookup_context
|
|
end
|
|
|
|
# Main render entry point shared by AV and AC.
|
|
def render(context, options)
|
|
if options.key?(:partial)
|
|
render_partial(context, options)
|
|
else
|
|
render_template(context, options)
|
|
end
|
|
end
|
|
|
|
# Render but returns a valid Rack body. If fibers are defined, we return
|
|
# a streaming body that renders the template piece by piece.
|
|
#
|
|
# Note that partials are not supported to be rendered with streaming,
|
|
# so in such cases, we just wrap them in an array.
|
|
def render_body(context, options)
|
|
if options.key?(:partial)
|
|
[render_partial(context, options)]
|
|
else
|
|
StreamingTemplateRenderer.new(@lookup_context).render(context, options)
|
|
end
|
|
end
|
|
|
|
# Direct accessor to template rendering.
|
|
def render_template(context, options) #:nodoc:
|
|
TemplateRenderer.new(@lookup_context).render(context, options)
|
|
end
|
|
|
|
# Direct access to partial rendering.
|
|
def render_partial(context, options, &block) #:nodoc:
|
|
PartialRenderer.new(@lookup_context).render(context, options, block)
|
|
end
|
|
end
|
|
end
|