diff --git a/History.md b/History.md index 1353e74a..9bbbedb4 100644 --- a/History.md +++ b/History.md @@ -1,13 +1,16 @@ # Liquid Change Log -## 5.0.2 (unreleased) +## 5.1.0 / 2021-09-09 ### Features * Add `remove_last`, and `replace_last` filters (#1422) [Anders Hagbard] * Add `base64_encode`, `base64_decode`, `base64_url_safe_encode`, and `base64_url_safe_decode` filters (#1450) [Daniel Insley] +* Introduce `to_liquid_value` in `Liquid::Drop` (#1441) [Michael Go] ### Fixes * Fix support for using a String subclass for the liquid source (#1421) [Dylan Thacker-Smith] +* Add `ParseTreeVisitor` to `RangeLookup` (#1470) [CP Clermont] +* Translate `RangeError` to `Liquid::Error` for `truncatewords` with large int (#1431) [Dylan Thacker-Smith] ## 5.0.1 / 2021-03-24 diff --git a/lib/liquid/condition.rb b/lib/liquid/condition.rb index 3dd433d6..786f9bc9 100644 --- a/lib/liquid/condition.rb +++ b/lib/liquid/condition.rb @@ -8,7 +8,7 @@ module Liquid # c = Condition.new(1, '==', 1) # c.evaluate #=> true # - class Condition #:nodoc: + class Condition # :nodoc: @@operators = { '==' => ->(cond, left, right) { cond.send(:equal_variables, left, right) }, '!=' => ->(cond, left, right) { !cond.send(:equal_variables, left, right) }, diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 605fddec..3d6ffc96 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -124,7 +124,7 @@ module Liquid # context['var'] = 'hi' # end # - # context['var] #=> nil + # context['var'] #=> nil def stack(new_scope = {}) push(new_scope) yield diff --git a/lib/liquid/range_lookup.rb b/lib/liquid/range_lookup.rb index 57bccd00..7e159be6 100644 --- a/lib/liquid/range_lookup.rb +++ b/lib/liquid/range_lookup.rb @@ -12,6 +12,8 @@ module Liquid end end + attr_reader :start_obj, :end_obj + def initialize(start_obj, end_obj) @start_obj = start_obj @end_obj = end_obj @@ -35,5 +37,11 @@ module Liquid Utils.to_integer(input) end end + + class ParseTreeVisitor < Liquid::ParseTreeVisitor + def children + [@node.start_obj, @node.end_obj] + end + end end end diff --git a/lib/liquid/version.rb b/lib/liquid/version.rb index 724bca4c..93388f2f 100644 --- a/lib/liquid/version.rb +++ b/lib/liquid/version.rb @@ -2,5 +2,5 @@ # frozen_string_literal: true module Liquid - VERSION = "5.0.2.alpha" + VERSION = "5.1.0" end diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index fc112b46..0b68482d 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -790,6 +790,18 @@ class StandardFiltersTest < Minitest::Test assert_equal(expectation, @filters.where(input, "ok")) end + def test_where_string_keys + input = [ + "alpha", "beta", "gamma", "delta" + ] + + expectation = [ + "beta", + ] + + assert_equal(expectation, @filters.where(input, "be")) + end + def test_where_no_key_set input = [ { "handle" => "alpha", "ok" => true }, diff --git a/test/unit/parse_tree_visitor_test.rb b/test/unit/parse_tree_visitor_test.rb index 2c085b38..c3e74487 100644 --- a/test/unit/parse_tree_visitor_test.rb +++ b/test/unit/parse_tree_visitor_test.rb @@ -159,6 +159,13 @@ class ParseTreeVisitorTest < Minitest::Test ) end + def test_for_range + assert_equal( + ["test"], + visit(%({% for x in (1..test) %}{% endfor %})) + ) + end + def test_tablerow_in assert_equal( ["test"],