Skip to content

Commit c1ce182

Browse files
etiennebarriedhh
andauthored
Add last to lists (#97)
* Add last to lists For simplicity, this does not strictly respect Array#last when nil or false is passed, returning the last element instead of raising a TypeError. It also doesn't coerce the parameter into an int with to_int like Array#last does. * Update list.rb Drop defensive programming * Update list_test.rb Drop defensive tests --------- Co-authored-by: David Heinemeier Hansson <[email protected]>
1 parent a0062d1 commit c1ce182

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/kredis/types/list.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ def append(*elements)
2424
def clear
2525
del
2626
end
27+
28+
def last(n = nil)
29+
n ? lrange(-n, -1) : lrange(-1, -1).first
30+
end
2731
end

test/types/list_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ class ListTest < ActiveSupport::TestCase
4141
assert_equal [], @list.elements
4242
end
4343

44+
test "last" do
45+
@list.append(%w[ 1 2 3 ])
46+
assert_equal "3", @list.last
47+
end
48+
49+
test "last(n)" do
50+
@list.append(%w[ 1 2 3 ])
51+
assert_equal %w[ 2 3 ], @list.last(2)
52+
end
53+
4454
test "typed as datetime" do
4555
@list = Kredis.list "mylist", typed: :datetime
4656

0 commit comments

Comments
 (0)