Skip to content

rvanasa/mo-convert

Repository files navigation

mo-convert  npm version GitHub license PRs Welcome

Systematic Motoko base library type conversions.


This repository includes Motoko source code and a JSON metadata file containing all base library type conversions with a consistent B.ofA : A -> B naming convention. mo-convert is intended as a stepping stone for community language tooling and for those such as myself who have trouble remembering whether the function was named Array.toBuffer() or Buffer.fromArray().

Quick Start (Motoko):

Add the following to your mops.toml config file:

[dependencies]
convert = "https://github.com/rvanasa/mo-convert"

Include the following import in your Motoko source code:

import C "mo:convert";

Go to town:

let nat = 123;
let text = C.Text.ofNat(nat); // => "123"

let option = C.Option.ofResult(#ok true); // => ?true

let array = [1, 2, 3];
let buffer = C.Buffer.ofArray<Nat>(array);

// Chain conversions with the piping operator
let pipe = (
  array
  |> C.Iter.ofArray _
  |> C.List.ofIter _
  |> C.Array.ofList _
);

Quick Start (Node.js):

Run the following command to install the mo-convert npm package:

npm i --save-dev mo-convert

Access the type conversion metadata:

const { conversions } = require('mo-convert');

console.log('All type conversions:', conversions);

Example JSON entry:

conversions[0] ==
{
  from: "Array",
  to: "Blob",
  module: "Blob",
  name: "fromArray",
  signature: "Blob.fromArray(bytes : [Nat8]) : Blob",
  prim: "arrayToBlob",
}