Low level bindings for Node's readline
let options =
Readline.interfaceOptions(
~input=[%raw "process.stdin"],
~output=[%raw "process.stdout"],
(),
);
let readline = Readline.createInterface(options);
let yes = [%re "/yes|y/gi"];
let no = [%re "/no|n/gi"];
readline
|. Readline.question("Is ReasonML and BuckleScript awesome? ", answer => {
switch (answer) {
| a when Js.Re.test(a, yes) => print_endline("You know it!")
| a when Js.Re.test(a, no) =>
print_endline("You need to revaluate your answer")
| a =>
print_endline({j| I don't have a variant for your answer 😦: $a |j})
};
Readline.close(readline);
});
let options =
Readline.interfaceOptions ~input:([%raw "process.stdin"])
~output:([%raw "process.stdout"]) ()
let readline = Readline.createInterface options
let yes = [%re "/yes|y/gi"]
let no = [%re "/no|n/gi"]
let _ =
readline |.
(Readline.question "Is ReasonML and BuckleScript awesome? "
(fun answer ->
(match answer with
| a when Js.Re.test a yes -> print_endline "You know it!"
| a when Js.Re.test a no ->
print_endline "You need to revaluate your answer"
| a ->
print_endline
{j| I don't have a variant for your answer 😦: $a |j});
Readline.close readline))
then you can run the compiled JS file with Node:
npm i --save bs-node-readline
then add
Then add bs-node-readline
to bs-dependencies
in your bsconfig.json
:
{
...
"bs-dependencies": ["bs-node-readline"]
}
See example in example/example.re
. Follows the NodeJS API found here: https://nodejs.org/api/readline.html