class Simple::Liquid

Constants

VERSION

Attributes

filters[R]
object[R]
template[R]

Public Class Methods

new(template, object = {}, filters = []) click to toggle source
# File lib/simple/liquid.rb, line 14
def initialize(template, object = {}, filters = [])
  @template = template
  @object = deep_stringify_keys(object.to_h)
  @filters = filters
end
render(template, object = {}, filters = []) click to toggle source
# File lib/simple/liquid.rb, line 20
def self.render(template, object = {}, filters = [])
  new(template, object, filters).render
end

Public Instance Methods

liquid_template() click to toggle source
# File lib/simple/liquid.rb, line 24
def liquid_template
  @liquid_template ||= ::Liquid::Template.parse(template, error_mode: :strict)
end
raise_if_errors!() click to toggle source
# File lib/simple/liquid.rb, line 37
def raise_if_errors!
  errors = liquid_template.errors
  return if errors.empty?
  messages = errors.map { |error| error.message.gsub('Liquid error:', '').strip }
  raise Simple::Liquid::Error.new(messages.join(', '))
end
render() click to toggle source
# File lib/simple/liquid.rb, line 28
def render
  liquid_template.render(
    object,
    strict_variables: true,
    strict_filters: true,
    filters: filters
  ).tap { raise_if_errors! }
end

Private Instance Methods

deep_stringify_keys(object) click to toggle source
# File lib/simple/liquid.rb, line 46
def deep_stringify_keys(object)
  if object.is_a?(Array)
    object.map { |value| deep_stringify_keys(value) }
  elsif object.is_a?(Hash)
    object.transform_keys(&:to_s).transform_values do |value|
      deep_stringify_keys(value)
    end
  else
    object
  end
end