From 661e09daace3e611726d83f23e5ac02b2b561d5d Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 8 Aug 2019 13:55:06 +0100 Subject: [PATCH] feat: Add enum support --- yants.nix | 37 ++++++++++++++++++++++--------------- z-enums.png | Bin 0 -> 41305 bytes 2 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 z-enums.png diff --git a/yants.nix b/yants.nix index f80374066..3dfebfcf1 100644 --- a/yants.nix +++ b/yants.nix @@ -2,13 +2,10 @@ # polymorphic types as well as the ability to define & check records. # # All types (should) compose as expected. -# -# TODO(tazjin): enums? { toPretty ? ((import {}).lib.generators.toPretty {}) }: with builtins; let - # Internal utilities: typeError = type: val: throw "Expected type '${type}', but value '${toPretty val}' is of type '${typeOf val}'"; @@ -49,18 +46,30 @@ with builtins; let struct' = name: def: { inherit name def; check = value: - let - fieldMatch = foldl' (checkField def value) true (attrNames def); - noExtras = checkExtraneous name def (attrNames value); + let fieldMatch = foldl' (checkField def value) true (attrNames def); + noExtras = checkExtraneous name def (attrNames value); in (isAttrs value && fieldMatch && noExtras); - __functor = self: value: if self.check value - then value + __functor = self: value: if self.check value then value else (throw "Expected '${self.name}'-struct, but ${toPretty value} is of type ${typeOf value}"); }; struct = arg: if isString arg then (struct' arg) else (struct' "anonymous" arg); + + enum = name: values: rec { + inherit name values; + check = (x: elem x values); + __functor = self: x: if self.check x then x + else (throw "'${x}' is not a member of enum '${self.name}'"); + match = x: actions: let + actionKeys = map (__functor { inherit name check; }) (attrNames actions); + missing = foldl' (m: k: if (elem k actionKeys) then m else m ++ [ k ]) [] values; + in if (length missing) > 0 + then throw "Missing match action for members: ${toPretty missing}" + else actions."${__functor { inherit name check; } x}"; + }; + in (typeSet [ # Primitive types (typedef "any" (_: true)) @@ -79,12 +88,10 @@ in (typeSet [ else throw "Expected list element of type '${t.name}', but '${toPretty e}' is of type '${typeOf e}'" )) true v))) - (poly "attrs" (t: v: - isAttrs v && (foldl' (s: e: s && ( - if t.check e then true - else throw "Expected attribute set element of type '${t.name}', but '${toPretty e}' is of type '${typeOf e}'" - )) true (attrValues v)) - )) + (poly "attrs" (t: v: isAttrs v && (foldl' (s: e: s && ( + if t.check e then true + else throw "Expected attribute set element of type '${t.name}', but '${toPretty e}' is of type '${typeOf e}'" + )) true (attrValues v)))) (poly2 "either" (t1: t2: v: t1.check v || t2.check v)) -]) // { inherit struct; } +]) // { inherit struct enum; } diff --git a/z-enums.png b/z-enums.png new file mode 100644 index 0000000000000000000000000000000000000000..71673e7ab63cec4c293d878429e4122dd5ad3b93 GIT binary patch literal 41305 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

h)T>YsZcsKYvc0GKHr) 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 JS?83{1OTybB$5CC literal 0 HcmV?d00001