mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +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
|
naturalSort
|
||||||
compareLists
|
compareLists
|
||||||
take
|
take
|
||||||
|
takeEnd
|
||||||
drop
|
drop
|
||||||
dropEnd
|
dropEnd
|
||||||
sublist
|
sublist
|
||||||
|
|
|
@ -1462,6 +1462,40 @@ rec {
|
||||||
*/
|
*/
|
||||||
take = count: sublist 0 count;
|
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.
|
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 =
|
testDrop =
|
||||||
let
|
let
|
||||||
inherit (lib) drop;
|
inherit (lib) drop;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue