X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/a6b60abf89587acd4fd3fed327f68848f1923c25..0b86cc7b4c6d4268654e8c460d4cbe1b0cbc549e:/src/plugins/alias.sml diff --git a/src/plugins/alias.sml b/src/plugins/alias.sml index 8ed2da6..2dbb44e 100644 --- a/src/plugins/alias.sml +++ b/src/plugins/alias.sml @@ -40,10 +40,10 @@ fun write nodes = fun writeD nodes = let - val files = map (fn node => aliasesDF node) nodes + fun files () = map (fn node => aliasesDF node) nodes in - (fn s => app (fn file => #write file s) files, - fn () => app (fn file => #writeDom file ()) files) + (fn s => app (fn file => #write file s) (files ()), + fn () => app (fn file => #writeDom file ()) (files ())) end fun openInAll base = foldl (fn (node, r) => @@ -52,9 +52,12 @@ fun openInAll base = foldl (fn (node, r) => Domain.domainsFile {node = node, name = base})) SM.empty Domain.nodes +fun reopenAliasesD () = (SM.app (fn {close, ...} => close ()) (!aliasesD); + aliasesD := openInAll "aliases.default") + val _ = Domain.registerBefore - (fn _ => (aliases := openInAll "aliases"; - aliasesD := openInAll "aliases.default")) + (fn _ => (aliases := openInAll "aliases.base"; + reopenAliasesD ())) val _ = Domain.registerAfter (fn _ => (SM.app (fn file => #close file ()) (!aliases); @@ -85,12 +88,10 @@ val _ = Env.type_one "email" datatype aliasSource = User of string | Default - | CatchAll val source = fn (EApp ((EVar "userSource", _), e), _) => Option.map User (Env.string e) | (EVar "defaultSource", _) => SOME Default - | (EVar "catchAllSource", _) => SOME CatchAll | _ => NONE datatype aliasTarget = @@ -136,16 +137,12 @@ fun writeSource (env, s, t) = write ": "; writeTarget (write, t); write "\n") - | Default => (write "*@"; - writeDom (); - write ": "; - writeTarget (write, t); - write "\n") - | CatchAll => (writeD "*@"; - writeDomD (); - writeD ": "; - writeTarget (writeD, t); - writeD "\n") + | Default => (reopenAliasesD (); + writeD "*@"; + writeDomD (); + writeD ": "; + writeTarget (writeD, t); + writeD "\n") end val _ = Env.actionV_two "aliasPrim"