class ViewComponentLiquid::TemplateHandler
Public Class Methods
call(template, source)
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 7 def call(template, source) "ViewComponentLiquid::TemplateHandler.new(self).render(#{source.inspect}, local_assigns)" end
new(view)
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 12 def initialize(view) @view = view @controller = @view.controller end
Public Instance Methods
compilable?()
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 49 def compilable? false end
filters()
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 36 def filters if @view.respond_to?(:liquid_filters, true) @view.send(:liquid_filters) end end
registers()
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 42 def registers { view: @view, file_system: ViewComponentLiquid::FileSystem.new(@view) } end
render(template, local_assigns={})
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 17 def render(template, local_assigns={}) component = LiquidComponent.parse(template) template = component.content assigns = local_assigns.deep_stringify_keys assigns["component"] = component.to_h.deep_stringify_keys assigns["controller"] = { "controller_name" => @controller.controller_name, "action_name" => @controller.action_name } if @view.respond_to?(:assigns) assigns["controller"].merge! @view.assigns.to_h @view.instance_variable_set(:@liquid_page, component) end liquid = Liquid::Template.parse(template) liquid.send(render_method, assigns, filters: filters, registers: registers).html_safe end
render_method()
click to toggle source
# File lib/view_component_liquid/template_handler.rb, line 53 def render_method (Rails.env.development? || Rails.env.test?) ? :render! : :render end