class KitLiquidRails::TemplateHandler

Attributes

context[R]

Public Class Methods

call(template, source) click to toggle source

Note: local_assigns is not available in ViewComponents

# File lib/kit_liquid_rails/template_handler.rb, line 6
def self.call(template, source)
  source ||= template.source
  "::KitLiquidRails::TemplateHandler.new(self).render(#{ source.inspect }, (defined?(local_assigns) ? local_assigns : nil))"
end
new(context) click to toggle source
# File lib/kit_liquid_rails/template_handler.rb, line 11
def initialize(context)
  @context = context
end

Public Instance Methods

compilable?() click to toggle source
# File lib/kit_liquid_rails/template_handler.rb, line 29
def compilable?
  false
end
render(source, local_assigns = nil) click to toggle source
# File lib/kit_liquid_rails/template_handler.rb, line 15
def render(source, local_assigns = nil)
  local_assigns ||= {}

  # Use `liquid_assigns` method on the `ViewComponent` to determine what to forward to Liquid.
  if context.is_a?(::ViewComponent::Base) && context.respond_to?(:liquid_assigns)
    local_assigns = context.liquid_assigns
  end

  local_assigns = local_assigns&.deep_stringify_keys

  liquid = Liquid::Template.parse(source)
  liquid.render(local_assigns).html_safe
end