* Add a variant of mapAttrs that allows rewriting the name of each
attribute in addition to the value. svn path=/nixpkgs/trunk/; revision=34246
This commit is contained in:
parent
3ff236c739
commit
89af9f3f4c
@ -126,12 +126,25 @@ rec {
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
mapAttrs (name: value: name + "-" + value)
|
mapAttrs (name: value: name + "-" + value)
|
||||||
{x = "foo"; y = "bar";}
|
{ x = "foo"; y = "bar"; }
|
||||||
=> {x = "x-foo"; y = "y-bar";}
|
=> { x = "x-foo"; y = "y-bar"; }
|
||||||
*/
|
*/
|
||||||
mapAttrs = f: set:
|
mapAttrs = f: set:
|
||||||
listToAttrs (map (attr: nameValuePair attr (f attr (getAttr attr set))) (attrNames set));
|
listToAttrs (map (attr: nameValuePair attr (f attr (getAttr attr set))) (attrNames set));
|
||||||
|
|
||||||
|
|
||||||
|
/* Like `mapAttrs', but allows the name of each attribute to be
|
||||||
|
changed in addition to the value. The applied function should
|
||||||
|
return both the new name and value as a `nameValuePair'.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
mapAttrs' (name: value: nameValuePair ("foo_" + name) ("bar-" + value))
|
||||||
|
{ x = "a"; y = "b"; }
|
||||||
|
=> { foo_x = "bar-a"; foo_y = "bar-b"; }
|
||||||
|
*/
|
||||||
|
mapAttrs' = f: set:
|
||||||
|
listToAttrs (map (attr: f attr (getAttr attr set)) (attrNames set));
|
||||||
|
|
||||||
|
|
||||||
/* Like `mapAttrs', except that it recursively applies itself to
|
/* Like `mapAttrs', except that it recursively applies itself to
|
||||||
attribute sets. Also, the first argument of the argument
|
attribute sets. Also, the first argument of the argument
|
||||||
|
Loading…
Reference in New Issue
Block a user