Add liquid.cr support (#15)

* Add liquid.cr support

* Minor

* Add specs for passing custom context to Liquid

E.g.:

context = Liquid::Context.new
context.set "key", "value"
render( "/path/to/template.liquid", context)
This commit is contained in:
Davor Ocelic 2018-02-10 20:21:11 +01:00 committed by Jerome Gravel-Niquet
parent d177f02e12
commit bfd630f35c
4 changed files with 38 additions and 0 deletions

View file

@ -13,3 +13,5 @@ development_dependencies:
github: MakeNowJust/crustache
temel:
github: f/temel
liquid:
github: TechMagister/liquid.cr

1
spec/fixtures/test.liquid vendored Normal file
View file

@ -0,0 +1 @@
<span>{{ process.pid }}</span>

31
spec/kilt/liquid_spec.cr Normal file
View file

@ -0,0 +1,31 @@
require "../spec_helper"
require "../../src/liquid"
class LiquidView
@process = { "pid" => Process.pid }
Kilt.file "spec/fixtures/test.liquid"
end
class LiquidViewWithCustomContext
# Use of instance variable is not required in user code. It is used here to
# avoid name clash with 'context' variable existing within spec.
def initialize
@context = Liquid::Context.new
@context.set "process", { "pid" => Process.pid }
end
Kilt.file "spec/fixtures/test.liquid", "__kilt_io__", "@context"
end
it "renders liquid" do
ctx = Liquid::Context.new
ctx.set "process", { "pid" => Process.pid }
Kilt.render("spec/fixtures/test.liquid", ctx).should eq("<span>#{Process.pid}</span>\n")
end
it "works with classes" do
LiquidView.new.to_s.should eq("<span>#{Process.pid}</span>\n")
end
it "works with classes and custom context" do
LiquidViewWithCustomContext.new.to_s.should eq("<span>#{Process.pid}</span>\n")
end

4
src/liquid.cr Normal file
View file

@ -0,0 +1,4 @@
require "./kilt"
require "liquid"
Kilt.register_engine "liquid", Liquid.embed