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