big breaking change: renaming lib.getAttr to lib.attrByPath

getAttr was ambiguous. It's also a builtin function

fix

svn path=/nixpkgs/trunk/; revision=15692
This commit is contained in:
Marc Weber
2009-05-24 10:57:41 +00:00
parent 62620f0411
commit f7f938a1d1
65 changed files with 153 additions and 140 deletions

View File

@@ -12,21 +12,24 @@ rec {
/* Return an attribute from nested attribute sets. For instance
["x" "y"] applied to some set e returns e.x.y, if it exists. The
default value is returned otherwise. !!! there is also
builtins.getAttr (is there a better name for this function?)
*/
getAttr = attrPath: default: e:
default value is returned otherwise. */
attrByPath = attrPath: default: e:
let attr = head attrPath;
in
if attrPath == [] then e
else if builtins ? hasAttr && hasAttr attr e
then getAttr (tail attrPath) default (builtins.getAttr attr e)
then attrByPath (tail attrPath) default (builtins.getAttr attr e)
else default;
# keep compatibility for some time. will be removed soon (the name getAttr
# should only be used for the builtins primop)
getAttr = a : b : c : builtins.trace "depreceated usage of lib.getAttr!"
(attrByPath a b c);
getAttrFromPath = attrPath: set:
let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'";
in getAttr attrPath (abort errorMsg) set;
in attrByPath attrPath (abort errorMsg) set;
/* Return the specified attributes from a set.