lib/hanami/view.rb in hanami-view-2.1.0.beta1 vs lib/hanami/view.rb in hanami-view-2.1.0.beta2
- old
+ new
@@ -475,12 +475,12 @@
end
# @!endgroup
# @api private
- def self.layout_path
- File.join(*[config.layouts_dir, config.layout].compact)
+ def self.layout_path(layout)
+ File.join(*[config.layouts_dir, layout].compact)
end
# @api private
def self.cache
Cache
@@ -518,28 +518,29 @@
# Render the view
#
# @param format [Symbol] template format to use
# @param context [Context] context object to use
+ # @param layout [String, FalseClass, nil] layout name, or false to indicate no layout
# @param input input data for preparing exposure values
#
# @return [Rendered] rendered view object
# @api public
- def call(format: config.default_format, context: config.default_context, **input)
+ def call(format: config.default_format, context: config.default_context, layout: config.layout, **input)
rendering = self.rendering(format: format, context: context)
locals = locals(rendering, input)
output = rendering.template(config.template, rendering.scope(config.scope, locals))
- if layout?
+ if layout
begin
output = rendering.template(
- self.class.layout_path,
+ self.class.layout_path(layout),
rendering.scope(config.scope, layout_locals(locals))
) { output }
rescue TemplateNotFoundError
- raise LayoutNotFoundError.new(config.layout, config.paths)
+ raise LayoutNotFoundError.new(layout, config.paths)
end
end
Rendered.new(output: output, locals: locals)
end
@@ -567,12 +568,8 @@
def layout_locals(locals)
locals.each_with_object({}) do |(key, value), layout_locals|
layout_locals[key] = value if exposures[key].for_layout?
end
- end
-
- def layout?
- !!config.layout # rubocop:disable Style/DoubleNegation
end
end
end