Class: Simple::Liquid

Inherits:
Object
  • Object
show all
Defined in:
lib/simple/liquid.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

VERSION =
'1.0.0'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template, object = {}) ⇒ Liquid

Returns a new instance of Liquid.



14
15
16
17
# File 'lib/simple/liquid.rb', line 14

def initialize(template, object = {})
  @template = template
  @object = deep_stringify_keys(object.to_h)
end

Instance Attribute Details

#objectObject (readonly)

Returns the value of attribute object.



12
13
14
# File 'lib/simple/liquid.rb', line 12

def object
  @object
end

#templateObject (readonly)

Returns the value of attribute template.



12
13
14
# File 'lib/simple/liquid.rb', line 12

def template
  @template
end

Class Method Details

.render(template, object = {}) ⇒ Object



19
20
21
# File 'lib/simple/liquid.rb', line 19

def self.render(template, object = {})
  new(template, object).render
end

Instance Method Details

#liquid_templateObject



23
24
25
# File 'lib/simple/liquid.rb', line 23

def liquid_template
  @liquid_template ||= ::Liquid::Template.parse(template, error_mode: :strict)
end

#raise_if_errors!Object



35
36
37
38
39
40
# File 'lib/simple/liquid.rb', line 35

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

#renderObject



27
28
29
30
31
32
33
# File 'lib/simple/liquid.rb', line 27

def render
  liquid_template.render(
    object,
    strict_variables: true,
    strict_filters: true
  ).tap { raise_if_errors! }
end