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