summaryrefslogtreecommitdiff
path: root/comments.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2018-09-01 17:54:16 +0200
committerAnthon van der Neut <anthon@mnt.org>2018-09-01 17:54:16 +0200
commit79195ab05d3f1c4513e8bdd29ad0327612f1ffb5 (patch)
treedcca91c514ffc0645c59fd795d4de6d537189308 /comments.py
parent94d2de64fbbe298365c42246e801e366aaaa9a60 (diff)
downloadruamel.yaml-79195ab05d3f1c4513e8bdd29ad0327612f1ffb5.tar.gz
add key and reverse parameter to CommentedSeq.sort()
suggested via email by Jannik Klemm
Diffstat (limited to 'comments.py')
-rw-r--r--comments.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/comments.py b/comments.py
index 2ca2d79..9d51a29 100644
--- a/comments.py
+++ b/comments.py
@@ -496,10 +496,14 @@ class CommentedSeq(MutableSliceableSequence, CommentedBase):
# type: (Any) -> Any
return self._lst + other
- def sort(self):
- # type: () -> None
- tmp_lst = sorted(zip(self._lst, range(len(self._lst))))
- self._lst = [x[0] for x in tmp_lst]
+ def sort(self, key=None, reverse=False):
+ # type: (Any, bool) -> None
+ if key is None:
+ tmp_lst = sorted(zip(self._lst, range(len(self._lst))), reverse=reverse)
+ self._lst = [x[0] for x in tmp_lst]
+ else:
+ tmp_lst = sorted(zip(map(key, self._lst), range(len(self._lst))), reverse=reverse)
+ self._lst = [self._lst[x[1]] for x in tmp_lst]
itm = self.ca.items
self.ca._items = {}
for idx, x in enumerate(tmp_lst):