From 00f53b16e8318d75810cd7eb2ea840abc9dce805 Mon Sep 17 00:00:00 2001 From: Gaurav Chande Date: Thu, 2 Jun 2016 15:41:48 -0400 Subject: [PATCH] Prevent Range usage in templates from blowing up --- lib/liquid/extensions.rb | 6 ++++++ test/integration/template_test.rb | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/liquid/extensions.rb b/lib/liquid/extensions.rb index ccad59e..d35bcea 100644 --- a/lib/liquid/extensions.rb +++ b/lib/liquid/extensions.rb @@ -25,6 +25,12 @@ class Numeric # :nodoc: end end +class Range # :nodoc: + def to_liquid + self + end +end + class Time # :nodoc: def to_liquid self diff --git a/test/integration/template_test.rb b/test/integration/template_test.rb index afe1493..8ad616d 100644 --- a/test/integration/template_test.rb +++ b/test/integration/template_test.rb @@ -306,4 +306,14 @@ class TemplateTest < Minitest::Test t.render!({ 'x' => 'foo' }, { strict_filters: true }) end end + + def test_using_range_literal_works_as_expected + t = Template.parse("{% assign foo = (x..y) %}{{ foo }}") + result = t.render({ 'x' => 1, 'y' => 5 }) + assert_equal '1..5', result + + t = Template.parse("{% assign nums = (x..y) %}{% for num in nums %}{{ num }}{% endfor %}") + result = t.render({ 'x' => 1, 'y' => 5 }) + assert_equal '12345', result + end end