Module: Lifeform::PhlexRenderable
- Defined in:
- lib/lifeform/phlex_renderable.rb
Instance Method Summary collapse
- #append=(value) ⇒ Object
- #capture ⇒ Object
- #helpers ⇒ Object
- #render(renderable, *args, **kwargs, &block) ⇒ Object
- #render_in(view_context, &block) ⇒ Object
- #safe_append=(value) ⇒ Object
-
#set_original_view_context(view_context) ⇒ Object
Trick ViewComponent into thinking we’re a ViewComponent to fix rendering output.
Instance Method Details
#append=(value) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/lifeform/phlex_renderable.rb', line 51 def append=(value) return unless value if value.html_safe? self.safe_append = value else @_target << case value when String then ERB::Util.html_escape(value) when Symbol then ERB::Util.html_escape(value.name) else ERB::Util.html_escape(value.to_s) end end end |
#capture ⇒ Object
65 66 67 |
# File 'lib/lifeform/phlex_renderable.rb', line 65 def capture super.html_safe end |
#helpers ⇒ Object
6 7 8 |
# File 'lib/lifeform/phlex_renderable.rb', line 6 def helpers @_view_context end |
#render(renderable, *args, **kwargs, &block) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/lifeform/phlex_renderable.rb', line 10 def render(renderable, *args, **kwargs, &block) return super if renderable.is_a?(Phlex::HTML) return super if renderable.is_a?(Class) && renderable < Phlex::HTML @_target << @_view_context.render(renderable, *args, **kwargs, &block) nil end |
#render_in(view_context, &block) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/lifeform/phlex_renderable.rb', line 19 def render_in(view_context, &block) if block_given? call(view_context: view_context) do |*args| view_context.with_output_buffer(self) do original_length = @_target.length output = yield(*args) unchanged = (original_length == @_target.length) if unchanged if output.is_a?(ActiveSupport::SafeBuffer) unsafe_raw(output) else text(output) end end end end.html_safe else call(view_context: view_context).html_safe end end |
#safe_append=(value) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/lifeform/phlex_renderable.rb', line 41 def safe_append=(value) return unless value @_target << case value when String then value when Symbol then value.name else value.to_s end end |
#set_original_view_context(view_context) ⇒ Object
Trick ViewComponent into thinking we’re a ViewComponent to fix rendering output
70 71 |
# File 'lib/lifeform/phlex_renderable.rb', line 70 def set_original_view_context(view_context) end |