nullOr
lib.types.nullOr
Docs pulled from | This Revision | 10 minutes ago
Null or value of ...
Noogle detected
Implementation
The following is the current implementation of this function.
nullOr =
elemType:
mkOptionType rec {
name = "nullOr";
description = "null or ${
optionDescriptionPhrase (class: class == "noun" || class == "conjunction") elemType
}";
descriptionClass = "conjunction";
check = x: x == null || elemType.check x;
merge =
loc: defs:
let
nrNulls = count (def: def.value == null) defs;
in
if nrNulls == length defs then
null
else if nrNulls != 0 then
throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}."
else
elemType.merge loc defs;
emptyValue = {
value = null;
};
getSubOptions = elemType.getSubOptions;
getSubModules = elemType.getSubModules;
substSubModules = m: nullOr (elemType.substSubModules m);
functor = (elemTypeFunctor name { inherit elemType; }) // {
type = payload: types.nullOr payload.elemType;
};
nestedTypes.elemType = elemType;
};