nix-community.nixvim/lib/utils.nix

43 lines
883 B
Nix
Raw Normal View History

2024-05-05 19:39:35 +02:00
{ lib, _nixvimTests }:
with lib;
{
2024-05-05 19:39:35 +02:00
listToUnkeyedAttrs =
list:
builtins.listToAttrs (lib.lists.imap0 (idx: lib.nameValuePair "__unkeyed-${toString idx}") list);
2024-01-25 16:58:58 +01:00
enableExceptInTests = !_nixvimTests;
2024-05-05 19:39:35 +02:00
emptyTable = {
"__empty" = null;
};
2024-01-25 16:58:58 +01:00
2024-01-31 09:52:00 +01:00
/*
2024-05-05 19:39:35 +02:00
Convert a string from camelCase to snake_case
Type: string -> string
2024-01-31 09:52:00 +01:00
*/
2024-05-05 19:39:35 +02:00
toSnakeCase =
let
splitByWords = builtins.split "([A-Z])";
processWord = s: if isString s then s else "_" + toLower (elemAt s 0);
in
string:
let
2024-01-31 09:52:00 +01:00
words = splitByWords string;
in
2024-05-05 19:39:35 +02:00
concatStrings (map processWord words);
2024-01-31 09:52:00 +01:00
2024-01-25 16:58:58 +01:00
mkIfNonNull' = x: y: (mkIf (x != null) y);
mkIfNonNull = x: (mkIfNonNull' x x);
2024-05-05 19:39:35 +02:00
ifNonNull' = x: y: if (x == null) then null else y;
2024-01-25 16:58:58 +01:00
2024-05-05 19:39:35 +02:00
mkRaw = r: if (isString r && (r != "")) then { __raw = r; } else null;
2024-01-25 16:58:58 +01:00
wrapDo = string: ''
do
${string}
end
'';
}