diff --git a/lib/phlex/sgml.rb b/lib/phlex/sgml.rb index 427518a1..4e308038 100644 --- a/lib/phlex/sgml.rb +++ b/lib/phlex/sgml.rb @@ -95,17 +95,16 @@ def await(task) end # Renders the view and returns the buffer. The default buffer is a mutable String. - def call(buffer = +"", context: Phlex::Context.new, view_context: nil, parent: nil, &block) - __final_call__(buffer, context: context, view_context: view_context, parent: parent, &block).tap do + def call(...) + __final_call__(...).tap do self.class.rendered_at_least_once! end end # @api private - def __final_call__(buffer = +"", context: Phlex::Context.new, view_context: nil, parent: nil, &block) + def __final_call__(buffer = +"", context: Phlex::Context.new, parent: nil, &block) @_buffer = buffer @_context = context - @_view_context = view_context @_parent = parent block ||= @_content_block @@ -223,10 +222,10 @@ def flush def render(renderable, &block) case renderable when Phlex::SGML - renderable.call(@_buffer, context: @_context, view_context: @_view_context, parent: self, &block) + renderable.call(@_buffer, context: @_context, parent: self, &block) when Class if renderable < Phlex::SGML - renderable.new.call(@_buffer, context: @_context, view_context: @_view_context, parent: self, &block) + renderable.new.call(@_buffer, context: @_context, parent: self, &block) end when Enumerable renderable.each { |r| render(r, &block) } diff --git a/lib/phlex/testing/view_helper.rb b/lib/phlex/testing/view_helper.rb index 310b7b8a..d53fdf12 100644 --- a/lib/phlex/testing/view_helper.rb +++ b/lib/phlex/testing/view_helper.rb @@ -7,11 +7,7 @@ def render(view, &block) view = view.new end - view.call(view_context: view_context, &block) - end - - def view_context - nil + view.call(&block) end end end diff --git a/test/phlex/view/call.rb b/test/phlex/view/call.rb index 8eed1d65..b493de78 100644 --- a/test/phlex/view/call.rb +++ b/test/phlex/view/call.rb @@ -15,18 +15,6 @@ def view_template end end - with "`render?` method returning false when the view context is true" do - view do - def view_template - plain "Hi" - end - - def render? - !@_view_context - end - end - end - with "a view that yields an object" do view do def view_template diff --git a/test/phlex/view/capture.rb b/test/phlex/view/capture.rb index 3e9a6b24..0990e5e9 100644 --- a/test/phlex/view/capture.rb +++ b/test/phlex/view/capture.rb @@ -84,20 +84,29 @@ def view_template view do def view_template h1 { "Before" } - render @_view_context.previewer do - render @_view_context.component + render @_context.view_context.previewer do + render @_context.view_context.component end h1 { "After" } end end + let(:context) do + Phlex::Context.new.tap do |context| + class << context + attr_accessor :view_context + end + context.view_context = self + end + end + it "should contain the full capture" do - expect(example.call(view_context: self)).to be == %(