diff --git a/shard.yml b/shard.yml index 562cb39..589ab0d 100644 --- a/shard.yml +++ b/shard.yml @@ -13,3 +13,5 @@ development_dependencies: github: MakeNowJust/crustache temel: github: f/temel + liquid: + github: TechMagister/liquid.cr diff --git a/spec/fixtures/test.liquid b/spec/fixtures/test.liquid new file mode 100644 index 0000000..20464a7 --- /dev/null +++ b/spec/fixtures/test.liquid @@ -0,0 +1 @@ +{{ process.pid }} diff --git a/spec/kilt/liquid_spec.cr b/spec/kilt/liquid_spec.cr new file mode 100644 index 0000000..f8c4a98 --- /dev/null +++ b/spec/kilt/liquid_spec.cr @@ -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("#{Process.pid}\n") +end + +it "works with classes" do + LiquidView.new.to_s.should eq("#{Process.pid}\n") +end + +it "works with classes and custom context" do + LiquidViewWithCustomContext.new.to_s.should eq("#{Process.pid}\n") +end diff --git a/src/liquid.cr b/src/liquid.cr new file mode 100644 index 0000000..68091d9 --- /dev/null +++ b/src/liquid.cr @@ -0,0 +1,4 @@ +require "./kilt" +require "liquid" + +Kilt.register_engine "liquid", Liquid.embed