diff --git a/spec/marten/template/tag/for/loop_spec.cr b/spec/marten/template/tag/for/loop_spec.cr index c7a720de0..e033c3340 100644 --- a/spec/marten/template/tag/for/loop_spec.cr +++ b/spec/marten/template/tag/for/loop_spec.cr @@ -101,4 +101,44 @@ describe Marten::Template::Tag::For::Loop do loop.revindex0.should eq 8 end end + + describe "#odd?" do + it "returns true if the index is odd" do + loop = Marten::Template::Tag::For::Loop.new(items_size: 10) + loop.index = 1 + loop.odd?.should eq true + + loop.index = 3 + loop.odd?.should eq true + end + + it "return false if the index is even" do + loop = Marten::Template::Tag::For::Loop.new(items_size: 10) + loop.index = 2 + loop.odd?.should eq false + + loop.index = 4 + loop.odd?.should eq false + end + end + + describe "#even?" do + it "returns true if the index is even" do + loop = Marten::Template::Tag::For::Loop.new(items_size: 10) + loop.index = 0 + loop.even?.should eq true + + loop.index = 2 + loop.even?.should eq true + end + + it "return false if the index is odd" do + loop = Marten::Template::Tag::For::Loop.new(items_size: 10) + loop.index = 1 + loop.even?.should eq false + + loop.index = 3 + loop.even?.should eq false + end + end end diff --git a/src/marten/template/tag/for/loop.cr b/src/marten/template/tag/for/loop.cr index 6b67d1cdb..e248c6b7e 100644 --- a/src/marten/template/tag/for/loop.cr +++ b/src/marten/template/tag/for/loop.cr @@ -36,6 +36,14 @@ module Marten def revindex0 @items_size - @index - 1 end + + def odd? + @index.odd? + end + + def even? + @index.even? + end end end end