bucklescript-tea
Version:
TEA for Bucklescript
476 lines (450 loc) • 17.9 kB
JavaScript
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
;
var Block = require("bs-platform/lib/js/block.js");
var Curry = require("bs-platform/lib/js/curry.js");
var Caml_obj = require("bs-platform/lib/js/caml_obj.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js");
function nothing(param) {
return /* () */0;
}
function performOpt(toOptionalMessage, param) {
var task = param[0];
return /* EnqueueCall */Block.__(2, [(function (callbacks) {
return Curry._1(task, (function (param) {
if (param.tag) {
throw [
Caml_builtin_exceptions.failure,
"ERROR: Task perfom returned error of never! Should not happen!"
];
} else {
var match = Curry._1(toOptionalMessage, param[0]);
if (match !== undefined) {
return Curry._1(callbacks.contents.enqueue, Caml_option.valFromOption(match));
} else {
return /* () */0;
}
}
}));
})]);
}
function perform(toMessage, task) {
return performOpt((function (v) {
return Caml_option.some(Curry._1(toMessage, v));
}), task);
}
function attemptOpt(resultToOptionalMessage, param) {
var task = param[0];
return /* EnqueueCall */Block.__(2, [(function (callbacks) {
return Curry._1(task, (function (value) {
var match = Curry._1(resultToOptionalMessage, value);
if (match !== undefined) {
return Curry._1(callbacks.contents.enqueue, Caml_option.valFromOption(match));
} else {
return /* () */0;
}
}));
})]);
}
function attempt(resultToMessage, task) {
return attemptOpt((function (v) {
return Caml_option.some(Curry._1(resultToMessage, v));
}), task);
}
function ignore(task) {
return attemptOpt((function (param) {
return ;
}), task);
}
function succeed(value) {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}
function fail(value) {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [value]));
})];
}
function nativeBinding(func) {
return /* Task */[func];
}
function andThen(fn, param) {
var task = param[0];
return /* Task */[(function (cb) {
return Curry._1(task, (function (err) {
if (err.tag) {
return Curry._1(cb, err);
} else {
var match = Curry._1(fn, err[0]);
return Curry._1(match[0], cb);
}
}));
})];
}
function onError(fn, param) {
var task = param[0];
return /* Task */[(function (cb) {
return Curry._1(task, (function (ok) {
if (ok.tag) {
var match = Curry._1(fn, ok[0]);
return Curry._1(match[0], cb);
} else {
return Curry._1(cb, ok);
}
}));
})];
}
function fromResult(param) {
if (param.tag) {
var value = param[0];
return /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [value]));
})];
} else {
var value$1 = param[0];
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value$1]));
})];
}
}
function mapError(func, task) {
return onError((function (e) {
var value = Curry._1(func, e);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [value]));
})];
}), task);
}
function toOption(task) {
return onError((function (param) {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [undefined]));
})];
}), andThen((function (v) {
var value = Caml_option.some(v);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task));
}
function map(func, task1) {
return andThen((function (v1) {
var value = Curry._1(func, v1);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task1);
}
function map2(func, task1, task2) {
return andThen((function (v1) {
return andThen((function (v2) {
var value = Curry._2(func, v1, v2);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task2);
}), task1);
}
function map3(func, task1, task2, task3) {
return andThen((function (v1) {
return andThen((function (v2) {
return andThen((function (v3) {
var value = Curry._3(func, v1, v2, v3);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task3);
}), task2);
}), task1);
}
function map4(func, task1, task2, task3, task4) {
return andThen((function (v1) {
return andThen((function (v2) {
return andThen((function (v3) {
return andThen((function (v4) {
var value = Curry._4(func, v1, v2, v3, v4);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task4);
}), task3);
}), task2);
}), task1);
}
function map5(func, task1, task2, task3, task4, task5) {
return andThen((function (v1) {
return andThen((function (v2) {
return andThen((function (v3) {
return andThen((function (v4) {
return andThen((function (v5) {
var value = Curry._5(func, v1, v2, v3, v4, v5);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task5);
}), task4);
}), task3);
}), task2);
}), task1);
}
function map6(func, task1, task2, task3, task4, task5, task6) {
return andThen((function (v1) {
return andThen((function (v2) {
return andThen((function (v3) {
return andThen((function (v4) {
return andThen((function (v5) {
return andThen((function (v6) {
var value = Curry._6(func, v1, v2, v3, v4, v5, v6);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), task6);
}), task5);
}), task4);
}), task3);
}), task2);
}), task1);
}
function sequence(param) {
if (param) {
return map2((function (l, r) {
return /* :: */[
l,
r
];
}), param[0], sequence(param[1]));
} else {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [/* [] */0]));
})];
}
}
var testing_deop = {
contents: true
};
function testing(param) {
var doTest = function (expected, param) {
return Curry._1(param[0], (function (v) {
if (Caml_obj.caml_equal(v, expected)) {
console.log(/* tuple */[
"Passed:",
expected,
v
]);
return /* () */0;
} else {
console.log(/* tuple */[
"FAILED:",
expected,
v
]);
return /* () */0;
}
}));
};
var s = /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [42]));
})];
doTest(/* Ok */Block.__(0, [42]), s);
var f = /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [86]));
})];
doTest(/* Error */Block.__(1, [86]), f);
var r = function (param) {
if (testing_deop.contents) {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [42]));
})];
} else {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [3.14]));
})];
}
};
var a1 = andThen((function (n) {
var value = n + 2 | 0;
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [2]));
})]);
doTest(/* Ok */Block.__(0, [4]), a1);
var a2 = andThen((function (n) {
var value = String(n);
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})];
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [2]));
})]);
doTest(/* Ok */Block.__(0, ["2"]), a2);
var m1 = map((function (prim) {
return Math.sqrt(prim);
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [9]));
})]);
doTest(/* Ok */Block.__(0, [3]), m1);
var m2 = map2((function (prim, prim$1) {
return prim + prim$1 | 0;
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [9]));
})], /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [3]));
})]);
doTest(/* Ok */Block.__(0, [12]), m2);
var m3 = map((function (prim) {
return String(prim);
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [9]));
})]);
doTest(/* Ok */Block.__(0, ["9"]), m3);
var s0 = sequence(/* :: */[
/* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [1]));
})],
/* :: */[
/* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [2]));
})],
/* [] */0
]
]);
doTest(/* Ok */Block.__(0, [/* :: */[
1,
/* :: */[
2,
/* [] */0
]
]]), s0);
var s1 = sequence(/* :: */[
/* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [1]));
})],
/* :: */[
/* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [2.7]));
})],
/* :: */[
r(/* () */0),
/* [] */0
]
]
]);
doTest(/* Error */Block.__(1, [2.7]), s1);
var e0 = onError((function (_msg) {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [42]));
})];
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, ["file not found"]));
})]);
doTest(/* Ok */Block.__(0, [42]), e0);
var e1 = onError((function (_msg) {
return /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [42]));
})];
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, ["file not found"]));
})]);
doTest(/* Error */Block.__(1, [42]), e1);
var n0 = sequence(/* :: */[
mapError((function (prim) {
return String(prim);
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [42]));
})]),
/* :: */[
mapError((function (prim) {
return prim.toString();
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [3.14]));
})]),
/* [] */0
]
]);
doTest(/* Error */Block.__(1, ["42"]), n0);
var n1 = sequence(/* :: */[
mapError((function (prim) {
return String(prim);
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [1]));
})]),
/* :: */[
mapError((function (prim) {
return prim.toString();
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [3.14]));
})]),
/* [] */0
]
]);
doTest(/* Error */Block.__(1, ["3.14"]), n1);
var n2 = sequence(/* :: */[
mapError((function (prim) {
return String(prim);
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [1]));
})]),
/* :: */[
mapError((function (prim) {
return prim.toString();
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [2]));
})]),
/* [] */0
]
]);
doTest(/* Ok */Block.__(0, [/* :: */[
1,
/* :: */[
2,
/* [] */0
]
]]), n2);
perform((function (param) {
return 42;
}), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [18]));
})]);
var value = 42;
doTest(/* Ok */Block.__(0, [42]), /* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [value]));
})]);
var value$1 = "failure";
doTest(/* Error */Block.__(1, ["failure"]), /* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, [value$1]));
})]);
doTest(/* Ok */Block.__(0, [undefined]), toOption(/* Task */[(function (cb) {
return Curry._1(cb, /* Error */Block.__(1, ["for some reason"]));
})]));
doTest(/* Ok */Block.__(0, [42]), toOption(/* Task */[(function (cb) {
return Curry._1(cb, /* Ok */Block.__(0, [42]));
})]));
return /* () */0;
}
exports.nothing = nothing;
exports.performOpt = performOpt;
exports.perform = perform;
exports.attemptOpt = attemptOpt;
exports.attempt = attempt;
exports.ignore = ignore;
exports.succeed = succeed;
exports.fail = fail;
exports.nativeBinding = nativeBinding;
exports.andThen = andThen;
exports.onError = onError;
exports.fromResult = fromResult;
exports.mapError = mapError;
exports.toOption = toOption;
exports.map = map;
exports.map2 = map2;
exports.map3 = map3;
exports.map4 = map4;
exports.map5 = map5;
exports.map6 = map6;
exports.sequence = sequence;
exports.testing_deop = testing_deop;
exports.testing = testing;
/* No side effect */