Sha256: 02405d7d09fc2386d3587422b534c2270d9389567567a13368d572d629c21e73
Contents?: true
Size: 1.12 KB
Versions: 4
Compression:
Stored size: 1.12 KB
Contents
# frozen_string_literal: true module Phlex module Renderable def render(renderable, *args, **kwargs, &block) if renderable.is_a?(View) if block_given? && !block.binding.receiver.is_a?(Phlex::Block) block = Phlex::Block.new(self, &block) end renderable.call(@_target, view_context: @_view_context, parent: self, &block) elsif renderable.is_a?(Class) && renderable < View raise ArgumentError, "You tried to render the Phlex view class: #{renderable.name} but you probably meant to render an instance of that class instead." else @_target << @_view_context.render(renderable, *args, **kwargs, &block) end nil end def render_in(view_context, &block) if block_given? call(view_context: view_context) do |*args, **kwargs| view_context.with_output_buffer(self) do original_length = @_target.length output = yield(*args, **kwargs) unchanged = (original_length == @_target.length) text(output) if unchanged && output.is_a?(String) end end.html_safe else call(view_context: view_context).html_safe end end def format :html end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
phlex-0.4.0 | lib/phlex/renderable.rb |
phlex-0.3.2 | lib/phlex/renderable.rb |
phlex-0.3.1 | lib/phlex/renderable.rb |
phlex-0.3.0 | lib/phlex/renderable.rb |