forked from mirrors/nixpkgs
Hopefully a fixed version of Refactor: introduce isType reducing redundancy.
Coding-by-sed wasn't a good idea :(
This commit is contained in:
parent
6c97e9ef72
commit
993deb1a4a
|
@ -11,10 +11,10 @@ with import ./properties.nix;
|
|||
|
||||
rec {
|
||||
|
||||
inherit (lib) typeOf;
|
||||
inherit (lib) isType;
|
||||
|
||||
|
||||
isOption = attrs: (typeOf attrs) == "option";
|
||||
isOption = isType "option";
|
||||
mkOption = attrs: attrs // {
|
||||
_type = "option";
|
||||
# name (this is the name of the attributem it is automatically generated by the traversal)
|
||||
|
@ -190,7 +190,7 @@ rec {
|
|||
defValue = builtins.getAttr defName defs;
|
||||
optValue = builtins.getAttr defName opts;
|
||||
in
|
||||
if typeOf defValue == "option"
|
||||
if isOption defValue
|
||||
then
|
||||
# `defValue' is an option.
|
||||
if hasAttr defName opts
|
||||
|
|
|
@ -11,13 +11,13 @@ with import ./attrsets.nix;
|
|||
|
||||
rec {
|
||||
|
||||
inherit (lib) typeOf;
|
||||
inherit (lib) isType;
|
||||
|
||||
# Tell that nothing is defined. When properties are evaluated, this type
|
||||
# is used to remove an entry. Thus if your property evaluation semantic
|
||||
# implies that you have to mute the content of an attribute, then your
|
||||
# property should produce this value.
|
||||
isNotdef = attrs: (typeOf attrs) == "notdef";
|
||||
isNotdef = isType "notdef";
|
||||
mkNotdef = {_type = "notdef";};
|
||||
|
||||
# General property type, it has a property attribute and a content
|
||||
|
@ -32,7 +32,7 @@ rec {
|
|||
# - onGlobalDelay: run on all copied properties.
|
||||
# - onEval: run on an evaluated property.
|
||||
# - onGlobalEval: run on a list of property stack on top of their values.
|
||||
isProperty = attrs: (typeOf attrs) == "property";
|
||||
isProperty = isType "property";
|
||||
mkProperty = p@{property, content, ...}: p // {
|
||||
_type = "property";
|
||||
};
|
||||
|
@ -187,7 +187,7 @@ rec {
|
|||
# and interpreted by the underlying system using properties (modules).
|
||||
|
||||
# Create a "Merge" property which only contains a condition.
|
||||
isMerge = attrs: (typeOf attrs) == "merge";
|
||||
isMerge = isType "merge";
|
||||
mkMerge = content: mkProperty {
|
||||
property = {
|
||||
_type = "merge";
|
||||
|
@ -204,7 +204,7 @@ rec {
|
|||
# is ignore.
|
||||
|
||||
# Create a "If" property which only contains a condition.
|
||||
isIf = attrs: (typeOf attrs) == "if";
|
||||
isIf = isType "if";
|
||||
mkIf = condition: content: mkProperty {
|
||||
property = {
|
||||
_type = "if";
|
||||
|
@ -271,7 +271,7 @@ rec {
|
|||
# priorities between values. The default priority is 100. The lowest
|
||||
# priorities are kept. The template argument must reproduce the same
|
||||
# attribute set hierarchy to override leaves of the hierarchy.
|
||||
isOverride = attrs: (typeOf attrs) == "override";
|
||||
isOverride = isType "override";
|
||||
mkOverrideTemplate = priority: template: content: mkProperty {
|
||||
property = {
|
||||
_type = "override";
|
||||
|
@ -371,7 +371,7 @@ rec {
|
|||
# of the list used by the merge function. And the highest ranked
|
||||
# definition would be the last. Definitions which does not have any rank
|
||||
# value have the default rank of 100.
|
||||
isOrder = attrs: (typeOf attrs) == "order";
|
||||
isOrder = isType "order";
|
||||
mkOrder = rank: content: mkProperty {
|
||||
property = {
|
||||
_type = "order";
|
||||
|
@ -434,7 +434,7 @@ rec {
|
|||
# properties on top of the option definition is nice for user manipulation
|
||||
# but require to check if the content of the property is not another
|
||||
# property. Such testing implies to verify if this is an attribute set
|
||||
# and if it possess the type 'property'. (see isProperty & typeOf)
|
||||
# and if it possess the type 'property'. (see isProperty & typeOf/isType)
|
||||
#
|
||||
# To avoid strict evaluation of option definitions, 'mkFixStrictness' is
|
||||
# introduced. This property protects an option definition by replacing
|
||||
|
|
|
@ -15,7 +15,7 @@ in
|
|||
|
||||
rec {
|
||||
|
||||
isSignificantByte = x: typeOf x == "significant-byte";
|
||||
isSignificantByte = isType "significant-byte";
|
||||
significantBytes = setTypes "significant-byte" {
|
||||
bigEndian = {};
|
||||
littleEndian = {};
|
||||
|
@ -37,7 +37,7 @@ rec {
|
|||
};
|
||||
|
||||
|
||||
isExecFormat = x: typeOf x == "exec-format";
|
||||
isExecFormat = isType "exec-format";
|
||||
execFormats = setTypes "exec-format" {
|
||||
aout = {}; # a.out
|
||||
elf = {};
|
||||
|
@ -47,7 +47,7 @@ rec {
|
|||
};
|
||||
|
||||
|
||||
isKernel = x: typeOf x == "kernel";
|
||||
isKernel = isType "kernel";
|
||||
kernels = with execFormats;
|
||||
setTypes "kernel" {
|
||||
cygwin = { execFormat = pe; };
|
||||
|
@ -61,7 +61,7 @@ rec {
|
|||
};
|
||||
|
||||
|
||||
isArchitecture = x: typeOf x == "architecture";
|
||||
isArchitecture = isType "architecture";
|
||||
architectures = setTypes "architecture" {
|
||||
apple = {};
|
||||
pc = {};
|
||||
|
|
|
@ -10,6 +10,7 @@ with import ./trivial.nix;
|
|||
|
||||
rec {
|
||||
|
||||
isType = type: x: (x._type or "") == type;
|
||||
hasType = x: isAttrs x && x ? _type;
|
||||
typeOf = x: x._type or "";
|
||||
|
||||
|
@ -26,7 +27,7 @@ rec {
|
|||
# hasOptions (boolean: whatever this option contains an option set)
|
||||
# delayOnGlobalEval (boolean: should properties go through the evaluation of this option)
|
||||
# docPath (path concatenated to the option name contained in the option set)
|
||||
isOptionType = attrs: typeOf attrs == "option-type";
|
||||
isOptionType = isType "option-type";
|
||||
mkOptionType =
|
||||
{ name
|
||||
, check ? (x: true)
|
||||
|
|
Loading…
Reference in a new issue