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