diff --git a/README.md b/README.md index 12b3c91..5b8dd59 100644 --- a/README.md +++ b/README.md @@ -274,7 +274,7 @@ R.keys(c) # ['c'], because c does not call super().__init__() ``` - [ ] keysIn -- [ ] last +- [x] last - [x] 0.1.2 lastIndexOf - [ ] length - [ ] lens diff --git a/ramda/__init__.py b/ramda/__init__.py index 431f37e..8a0041c 100644 --- a/ramda/__init__.py +++ b/ramda/__init__.py @@ -41,6 +41,7 @@ from .isEmpty import isEmpty from .join import join from .keys import keys +from .last import last from .lastIndexOf import lastIndexOf from .lt import lt from .lte import lte diff --git a/ramda/last.py b/ramda/last.py new file mode 100644 index 0000000..fdc5179 --- /dev/null +++ b/ramda/last.py @@ -0,0 +1,3 @@ +from .nth import nth + +last = nth(-1) diff --git a/test/test_last.py b/test/test_last.py new file mode 100644 index 0000000..2460302 --- /dev/null +++ b/test/test_last.py @@ -0,0 +1,29 @@ + +import unittest + +import ramda as R + +""" +https://github.com/ramda/ramda/blob/master/test/last.js +""" + + +class TestLast(unittest.TestCase): + def test_returns_the_last_element_of_an_ordered_collection(self): + self.assertEqual(3, R.last([1, 2, 3])) + self.assertEqual(2, R.last([1, 2])) + self.assertEqual(1, R.last([1])) + self.assertEqual(None, R.last([])) + + self.assertEqual('c', R.last('abc')) + self.assertEqual('b', R.last('ab')) + self.assertEqual('a', R.last('a')) + self.assertEqual('', R.last('')) + + def test_throws_if_applied_to_None(self): + with self.assertRaises(TypeError): + R.last(None) + + +if __name__ == '__main__': + unittest.main()