ucg 0.5.3

A configuration generation grammar.
Documentation
let t = (import "std/testing.ucg").asserts{};
let f = (import "std/functional.ucg");

let op = func (arg) => arg{foo="bar"};

assert t.equal{
    left = f.maybe{val=NULL}.do(op),
    right = NULL,
};

assert t.equal{
    left = f.maybe{val={}}.do(op),
    right = {foo="bar"},
};

assert t.equal{
    left = f.if{test=true}.do(op, {}),
    right = {foo="bar"},
};

assert t.equal{
    left = f.if{test=false}.do(op, {}),
    right = {},
};

assert t.equal{
    left = f.identity("foo"),
    right = "foo",
};