mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 11:03:15 +03:00
lib.takeEnd: init
This commit is contained in:
parent
dbd663f684
commit
9fee9e7371
3 changed files with 98 additions and 0 deletions
|
@ -279,6 +279,7 @@ let
|
|||
naturalSort
|
||||
compareLists
|
||||
take
|
||||
takeEnd
|
||||
drop
|
||||
dropEnd
|
||||
sublist
|
||||
|
|
|
@ -1462,6 +1462,40 @@ rec {
|
|||
*/
|
||||
take = count: sublist 0 count;
|
||||
|
||||
/**
|
||||
Return the last (at most) N elements of a list.
|
||||
|
||||
# Inputs
|
||||
|
||||
`count`
|
||||
|
||||
: Maximum number of elements to pick
|
||||
|
||||
`list`
|
||||
|
||||
: Input list
|
||||
|
||||
# Type
|
||||
|
||||
```
|
||||
takeEnd :: int -> [a] -> [a]
|
||||
```
|
||||
|
||||
# Examples
|
||||
:::{.example}
|
||||
## `lib.lists.takeEnd` usage example
|
||||
|
||||
```nix
|
||||
takeEnd 2 [ "a" "b" "c" "d" ]
|
||||
=> [ "c" "d" ]
|
||||
takeEnd 2 [ ]
|
||||
=> [ ]
|
||||
```
|
||||
|
||||
:::
|
||||
*/
|
||||
takeEnd = n: xs: drop (max 0 (length xs - n)) xs;
|
||||
|
||||
/**
|
||||
Remove the first (at most) N elements of a list.
|
||||
|
||||
|
|
|
@ -1262,6 +1262,69 @@ runTests {
|
|||
)
|
||||
];
|
||||
|
||||
testTakeEnd =
|
||||
let
|
||||
inherit (lib) takeEnd;
|
||||
in
|
||||
testAllTrue [
|
||||
(
|
||||
takeEnd 0 [
|
||||
1
|
||||
2
|
||||
3
|
||||
] == [ ]
|
||||
)
|
||||
(
|
||||
takeEnd 1 [
|
||||
1
|
||||
2
|
||||
3
|
||||
] == [ 3 ]
|
||||
)
|
||||
(
|
||||
takeEnd 2 [
|
||||
1
|
||||
2
|
||||
3
|
||||
] == [
|
||||
2
|
||||
3
|
||||
]
|
||||
)
|
||||
(
|
||||
takeEnd 3 [
|
||||
1
|
||||
2
|
||||
3
|
||||
] == [
|
||||
1
|
||||
2
|
||||
3
|
||||
]
|
||||
)
|
||||
(
|
||||
takeEnd 4 [
|
||||
1
|
||||
2
|
||||
3
|
||||
] == [
|
||||
1
|
||||
2
|
||||
3
|
||||
]
|
||||
)
|
||||
(takeEnd 0 [ ] == [ ])
|
||||
(takeEnd 1 [ ] == [ ])
|
||||
(
|
||||
takeEnd (-1) [
|
||||
1
|
||||
2
|
||||
3
|
||||
] == [ ]
|
||||
)
|
||||
(takeEnd (-1) [ ] == [ ])
|
||||
];
|
||||
|
||||
testDrop =
|
||||
let
|
||||
inherit (lib) drop;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue