7
0%
MIT
unpublishedBuckleScript bindings to refmt.js

bs-refmt

Proof that Reason can consume OCaml by way of compiling to JavaScript. As a side-effect it also reformats things, without any need for IO monads™, which shows conclusively that OCaml and Reason are superior to Haskell in every way. Q.E.D. ∎

Or just BuckleScript bindings to refmt.js

Installation

Run npm install --save glennsl/bs-refmt and add bs-refmt to the bs-dependencies in bsconfig.json.

Example

  • RE
  • ML
let ocamlCode  = {|
  let hello thing =
    Js.log {j|Hello $thing!|j}

  let () =
    hello "world"
|};

let reasonCode =
  ocamlCode |> Refmt.parseML
            |> fun | Ok(ast)  =>
                     ast |> Refmt.printRE |> Js.log

                   | Error(`RefmtParseError({ message })) =>
                     Js.log2("Error: ", message)
let ocamlCode =
  {|
  let hello thing =
    Js.log {j|Hello $thing!|j}

  let () =
    hello "world"
|}
let reasonCode =
  (ocamlCode |> Refmt.parseML) |>
    (function
     | ((Ok (ast))[@explicit_arity ]) -> (ast |> Refmt.printRE) |> Js.log
     | ((Error (`RefmtParseError { message }))[@explicit_arity ]) ->
         Js.log2 "Error: " message)

Usage

Bundling

The package has been tested to work with webpack, but requires a tiny bit of configuration because it depends on a few ndoe modules in code paths that aren't actually used in practice. To stub these out, just put the following in your webpack.config.js:

  node: {
    fs: 'empty',
    child_process: 'empty'
  }