From b6120edeaec4fb03575b09d59f50ece578017893 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 15 Jan 2016 16:52:34 -0800 Subject: [PATCH 01/13] Try out Liquid v4.0.0.rc1 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 734df2e4..6b55dcf4 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '~> 3.0') + s.add_runtime_dependency('liquid', '4.0.0.rc1') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From d24ea03acf3298c8a19d8357a3c7e85dda632aad Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 23 Mar 2016 12:29:49 -0700 Subject: [PATCH 02/13] Update highlight block test to conform with v4 API. --- test/test_tags.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_tags.rb b/test/test_tags.rb index fd6dcb97..43bffad1 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -46,8 +46,8 @@ CONTENT Jekyll::Tags::HighlightBlock.parse( "highlight", options_string, - ["test", "{% endhighlight %}", "\n"], - {} + Liquid::Tokenizer.new("test{% endhighlight %}\n"), + Liquid::ParseContext.new ) end From db8356b0655bd183a0ebdd1e3222959daca02b87 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 30 Aug 2016 11:51:13 -0700 Subject: [PATCH 03/13] Liquid 4.0 rc2 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 6b55dcf4..4db71a14 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '4.0.0.rc1') + s.add_runtime_dependency('liquid', '4.0.0.rc2') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From 191f5e5fd8135be5134254713556e9214481570d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 13 Sep 2016 15:25:52 -0700 Subject: [PATCH 04/13] Update to Liquid 4.0.0.rc3 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 4db71a14..8198ee10 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '4.0.0.rc2') + s.add_runtime_dependency('liquid', '4.0.0.rc3') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From dbea1ca80b3c78b9c4d01c78ff11659632f90c9c Mon Sep 17 00:00:00 2001 From: Florian Thomas Date: Sat, 17 Sep 2016 00:37:49 +0200 Subject: [PATCH 05/13] parse expressions before passing it to Liquid::Condition --- lib/jekyll/filters.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 43e01df1..f537e847 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -402,9 +402,11 @@ module Jekyll operator = parser.consume?(:comparison) condition = if operator - Liquid::Condition.new(left_expr, operator, parser.expression) + Liquid::Condition.new(Liquid::Expression.parse(left_expr), + operator, + Liquid::Expression.parse(parser.expression)) else - Liquid::Condition.new(left_expr) + Liquid::Condition.new(Liquid::Expression.parse(left_expr)) end parser.consume(:end_of_string) From dde0441b3af8c09b488076827ec5798ab050134e Mon Sep 17 00:00:00 2001 From: Florian Thomas Date: Thu, 22 Sep 2016 22:14:14 +0300 Subject: [PATCH 06/13] find keys also in assigned collections --- lib/jekyll/drops/site_drop.rb | 4 ++++ test/test_site_drop.rb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 test/test_site_drop.rb diff --git a/lib/jekyll/drops/site_drop.rb b/lib/jekyll/drops/site_drop.rb index 66366810..97b41806 100644 --- a/lib/jekyll/drops/site_drop.rb +++ b/lib/jekyll/drops/site_drop.rb @@ -19,6 +19,10 @@ module Jekyll end end + def key?(key) + (@obj.collections.key?(key) && key != "posts") || super + end + def posts @site_posts ||= @obj.posts.docs.sort { |a, b| b <=> a } end diff --git a/test/test_site_drop.rb b/test/test_site_drop.rb new file mode 100644 index 00000000..6175bbb8 --- /dev/null +++ b/test/test_site_drop.rb @@ -0,0 +1,21 @@ +require "helper" + +class TestSiteDrop < JekyllUnitTest + context "a site drop" do + setup do + @site = fixture_site({ + "collections" => ["thanksgiving"] + }) + @site.process + @drop = @site.to_liquid.site + end + + should "respond to `key?`" do + assert @drop.respond_to?(:key?) + end + + should "find a key if it's in the collection of the drop" do + assert @drop.key?("thanksgiving") + end + end +end From 793405c00c5f2f23454a88f0c4057029a8d154f4 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 15 Dec 2016 12:58:08 -0800 Subject: [PATCH 07/13] Liquid v4 has been released. --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 8198ee10..f4b73b54 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '4.0.0.rc3') + s.add_runtime_dependency('liquid', '~> 4.0') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From 7862f731b67becfdba9fa7eb049edcc0838b03ff Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 16 Dec 2016 15:38:19 -0800 Subject: [PATCH 08/13] grouping filters: use Liquid::ParseContext to create variable. --- lib/jekyll/filters/grouping_filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/filters/grouping_filters.rb b/lib/jekyll/filters/grouping_filters.rb index a16901d9..f2c03466 100644 --- a/lib/jekyll/filters/grouping_filters.rb +++ b/lib/jekyll/filters/grouping_filters.rb @@ -40,7 +40,7 @@ module Jekyll private def parse_expression(str) - Liquid::Variable.new(str, {}) + Liquid::Variable.new(str, Liquid::ParseContext.new) end private From c42eb7fc3a9030b23f90db77437cd41f2b4c7701 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 14:39:08 -0600 Subject: [PATCH 09/13] Take advantage of Liquid::Utils.to_date --- lib/jekyll/filters.rb | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index f537e847..ca47e06a 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -345,16 +345,9 @@ module Jekyll private def time(input) - case input - when Time - input.clone - when Date - input.to_time - when String - Time.parse(input) rescue Time.at(input.to_i) - when Numeric - Time.at(input) - else + begin + Liquid::Utils.to_date(input).to_time + rescue NoMethodError raise Errors::InvalidDateError, "Invalid Date: '#{input.inspect}' is not a valid datetime." end.localtime From 607ab66707744c3ec09fe1a03d89bd30337ebf57 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 15:13:27 -0600 Subject: [PATCH 10/13] Use Liquid's own `to_integer` --- lib/jekyll/filters.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index ca47e06a..1d21b99e 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -280,10 +280,11 @@ module Jekyll end end - def pop(array, input = 1) + def pop(array, num = 1) return array unless array.is_a?(Array) + num = Liquid::Utils.to_integer(num) new_ary = array.dup - new_ary.pop(input.to_i || 1) + new_ary.pop(num) new_ary end @@ -294,10 +295,11 @@ module Jekyll new_ary end - def shift(array, input = 1) + def shift(array, num = 1) return array unless array.is_a?(Array) + num = Liquid::Utils.to_integer(num) new_ary = array.dup - new_ary.shift(input.to_i || 1) + new_ary.shift(num) new_ary end @@ -310,11 +312,11 @@ module Jekyll def sample(input, num = 1) return input unless input.respond_to?(:sample) - n = num.to_i rescue 1 - if n == 1 + num = Liquid::Utils.to_integer(num) + if num == 1 input.sample else - input.sample(n) + input.sample(num) end end From 2eb84699362e0f34f28f2dd5bd48cacbe0e1a26e Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 15:48:03 -0600 Subject: [PATCH 11/13] Never throw on `sample` --- lib/jekyll/filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 1d21b99e..06a09345 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -312,7 +312,7 @@ module Jekyll def sample(input, num = 1) return input unless input.respond_to?(:sample) - num = Liquid::Utils.to_integer(num) + num = Liquid::Utils.to_integer(num) rescue 1 if num == 1 input.sample else From f7edcceb70281fca0ef2a9a95a5b64ffa7d620db Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 16:15:09 -0600 Subject: [PATCH 12/13] Check return value of `to_date` --- lib/jekyll/filters.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 06a09345..5ca2e10a 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -347,12 +347,12 @@ module Jekyll private def time(input) - begin - Liquid::Utils.to_date(input).to_time - rescue NoMethodError + date = Liquid::Utils.to_date(input) + unless date.respond_to?(:strftime) raise Errors::InvalidDateError, "Invalid Date: '#{input.inspect}' is not a valid datetime." - end.localtime + end + date.to_time.localtime end private From 72a56d9eb747edff8b79b7fe4f109a15c9b2e937 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 19:18:43 -0600 Subject: [PATCH 13/13] Check for `to_time` --- lib/jekyll/filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 5ca2e10a..b7103668 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -348,7 +348,7 @@ module Jekyll private def time(input) date = Liquid::Utils.to_date(input) - unless date.respond_to?(:strftime) + unless date.respond_to?(:to_time) raise Errors::InvalidDateError, "Invalid Date: '#{input.inspect}' is not a valid datetime." end