E-mail aliases
[hcoop/domtool2.git] / tests / domain2.dtl
dissimilarity index 61%
index 248f4a8..520abd1 100644 (file)
@@ -1,5 +1,33 @@
-extern val domain : string -> Domain => [Root];
-
-domain "hcoop.net" with
-
-end
+extern type domain;
+extern val domain : domain -> Domain => [Root];
+
+extern type emailUser;
+extern type email;
+
+extern type aliasSource;
+extern val userSource : emailUser -> aliasSource;
+extern val defaultSource : aliasSource;
+extern val catchAllSource : aliasSource;
+
+extern type aliasTarget;
+extern val addressTarget : email -> aliasTarget;
+extern val addressesTarget : [email] -> aliasTarget;
+extern val dropTarget : aliasTarget;
+
+extern val aliasPrim : aliasSource -> aliasTarget -> [Domain];
+
+val alias = \user -> \email -> aliasPrim (userSource user) (addressTarget email);
+val aliasMulti = \user -> \emails -> aliasPrim (userSource user) (addressesTarget emails);
+val aliasDrop = \user -> aliasPrim (userSource user) dropTarget;
+
+val defaultAlias = \email -> aliasPrim defaultSource (addressTarget email);
+val catchAllAlias = \email -> aliasPrim catchAllSource (addressTarget email);
+
+domain "hcoop.net" with
+       alias "schmeppo" "dlonker";
+       aliasMulti "me" ["nowhere","smelly@yikes"];
+       aliasDrop "yippo";
+
+       defaultAlias "billy";
+       catchAllAlias "bonkers"
+end