83 lines
4.1 KiB
Nix
83 lines
4.1 KiB
Nix
{ toMeta, types, ... }:
|
|
let
|
|
# Primitive Types
|
|
Bool = Option types.bool {};
|
|
Float = Option types.float {};
|
|
Integer = Option types.integer {};
|
|
Lines = Option types.lines {};
|
|
List = Option types.list {};
|
|
Null = Option types.null {};
|
|
Number = Option types.number {};
|
|
Path = Option types.path {};
|
|
PositiveInteger = Option types.positiveInteger {};
|
|
PositiveNumber = Option types.positiveNumber {};
|
|
String = Option types.string {};
|
|
UnsignedInteger = Option types.unsignedInteger {};
|
|
|
|
# Composed Types
|
|
Either = this: that: Option (types.either this that) {};
|
|
Enum = variants: Option (types.enum variants) {};
|
|
ListOf = subtype: Option (types.listOf subtype) {};
|
|
NullOr = subtype: Option (types.nullOr subtype) {};
|
|
SetOf = subtype: Option (types.setOf subtype) {};
|
|
in
|
|
{
|
|
inherit Bool Float Integer Lines List Null Number Path PositiveInteger PositiveNumber String UnsignedInteger;
|
|
inherit Either Enum ListOf NullOr SetOf;
|
|
|
|
# Primitive Types
|
|
Bool'
|
|
= default:
|
|
meta:
|
|
let
|
|
this = Bool meta;
|
|
in
|
|
this
|
|
// {
|
|
inherit default;
|
|
meta
|
|
= this.meta
|
|
// {
|
|
example = !default;
|
|
};
|
|
};
|
|
|
|
Disable
|
|
= meta:
|
|
Option types.bool { default = true; }
|
|
(
|
|
(toMeta meta)
|
|
// {
|
|
example = false;
|
|
}
|
|
);
|
|
|
|
Enable
|
|
= meta:
|
|
Option types.bool { default = false; }
|
|
(
|
|
(toMeta meta)
|
|
// {
|
|
example = true;
|
|
}
|
|
);
|
|
|
|
Float' = default: meta: (Float meta) // { inherit default; };
|
|
Integer' = default: meta: (Integer meta) // { inherit default; };
|
|
Lines' = default: meta: (Lines meta) // { inherit default; };
|
|
List' = default: meta: (List meta) // { inherit default; };
|
|
Null' = default: meta: (Null meta) // { inherit default; };
|
|
Number' = default: meta: (Number meta) // { inherit default; };
|
|
Path' = default: meta: (Path meta) // { inherit default; };
|
|
PositiveInteger' = default: meta: (PositiveInteger meta) // { inherit default; };
|
|
PositiveNumber' = default: meta: (PositiveNumber meta) // { inherit default; };
|
|
String' = default: meta: (String meta) // { inherit default; };
|
|
UnsignedInteger' = default: meta: (UnsignedInteger meta) // { inherit default; };
|
|
|
|
# Composed Types
|
|
Enum' = variants: default: meta: (Enum variants meta) // { inherit default; };
|
|
ListOf' = subtype: default: meta: (ListOf subtype meta) // { inherit default; };
|
|
NullOr' = subtype: default: meta: (NullOr subtype meta) // { inherit default; };
|
|
SetOf' = subtype: default: meta: (SetOf subtype meta) // { inherit default; };
|
|
}
|