8
43%
MIT
Node readline bindings for BuckleScript

bs-node-readline

Low level bindings for Node's readline

Example

  • RE
  • ML
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: Example of binding

Installation

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"]
}

Usage

See example in example/example.re. Follows the NodeJS API found here: https://nodejs.org/api/readline.html