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