lib/lists: init; add `listContainsValue`

Helps us validate lists that contain a bunch of values and see if it contains a desired list of values
This commit is contained in:
NotAShelf 2024-04-23 16:17:09 +03:00
parent 7fd653b4d8
commit b614dc6b41
No known key found for this signature in database
GPG Key ID: 02D1DD3FA08B6B29
2 changed files with 35 additions and 0 deletions

View File

@ -9,6 +9,7 @@
binds = import ./binds.nix {inherit lib;};
dag = import ./dag.nix {inherit lib;};
languages = import ./languages.nix {inherit lib;};
lists = import ./lists.nix {inherit lib;};
lua = import ./lua.nix {inherit lib;};
vim = import ./vim.nix;
}

34
lib/lists.nix Normal file
View File

@ -0,0 +1,34 @@
{lib}: let
inherit (lib.lists) elem all;
in {
/*
Checks if all values are present in the list.
Type:
listContainsValues :: { list :: [a], values :: [a] } -> Bool
Arguments:
list - A list of elements.
values - A list of values to check for presence in the list.
Returns:
True if all values are present in the list, otherwise False.
Example:
```nix
listContainsValues { list = [1 2 3]; values = [2 3]; }
=> True
listContainsValues { list = [1 2 3]; values = [2 4]; }
=> False
```
*/
listContainsValues = {
list,
values,
}: let
# Check if all values are present in the list
containsValue = value: elem value list;
in
all containsValue values;
}