mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
37 lines
973 B
Ruby
37 lines
973 B
Ruby
module ActionView
|
|
class AbstractRenderer #:nodoc:
|
|
delegate :find_template, :template_exists?, :with_fallbacks, :update_details,
|
|
:with_layout_format, :formats, :freeze_formats, :to => :@lookup_context
|
|
|
|
def initialize(view)
|
|
@view = view
|
|
@lookup_context = view.lookup_context
|
|
end
|
|
|
|
def render
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# Checks if the given path contains a format and if so, change
|
|
# the lookup context to take this new format into account.
|
|
def wrap_formats(value)
|
|
return yield unless value.is_a?(String)
|
|
|
|
if value.sub!(formats_regexp, "")
|
|
update_details(:formats => [$1.to_sym]){ yield }
|
|
else
|
|
yield
|
|
end
|
|
end
|
|
|
|
def formats_regexp
|
|
@@formats_regexp ||= /\.(#{Mime::SET.symbols.join('|')})$/
|
|
end
|
|
|
|
protected
|
|
|
|
def instrument(name, options={})
|
|
ActiveSupport::Notifications.instrument("render_#{name}.action_view", options){ yield }
|
|
end
|
|
end
|
|
end
|