lib: add applyPrefixToAttrs

This commit is contained in:
Gaetan Lepage 2024-12-17 21:18:57 +01:00 committed by nix-infra-bot
parent e24e40e5f1
commit 1d50fa4f63
4 changed files with 30 additions and 1 deletions

View file

@ -67,6 +67,7 @@ lib.fix (
;
inherit (self.utils)
applyPrefixToAttrs
concatNonEmptyLines
emptyTable
enableExceptInTests

View file

@ -20,6 +20,23 @@ rec {
"__empty" = null;
};
/**
Add a prefix to the keys of an attrs.
# Example
```nix
applyPrefixToAttrs "prefix_" { foo = 1; bar = 2; }
=> { prefix_foo = 1; prefix_bar = 2; }
```
# Type
```
applyPrefixToAttrs :: String -> AttrSet -> AttrSet
```
*/
applyPrefixToAttrs = prefix: lib.mapAttrs' (n: lib.nameValuePair (prefix + n));
/**
Turn all the keys of an attrs into raw lua.

View file

@ -113,7 +113,7 @@
extraPlugins = extraPlugins ++ [
(cfg.packageDecorator cfg.package)
];
globals = lib.mapAttrs' (n: lib.nameValuePair (globalPrefix + n)) (cfg.settings or { });
globals = lib.nixvim.applyPrefixToAttrs globalPrefix (cfg.settings or { });
}
(lib.optionalAttrs (isColorscheme && (colorscheme != null)) {
colorscheme = lib.mkDefault colorscheme;

View file

@ -61,6 +61,17 @@ let
expected = ''{ foo = "bar", qux = { 1, 2, 3 } }'';
};
testApplyPrefixToAttrs = {
expr = lib.nixvim.applyPrefixToAttrs "prefix_" {
foo = 1;
bar = 2;
};
expected = {
prefix_foo = 1;
prefix_bar = 2;
};
};
testToLuaObjectRawLua = {
expr = lib.nixvim.toLuaObject { __raw = "<lua code>"; };
expected = "<lua code>";