Systematic Motoko base library type conversions.
This repository includes Motoko source code and a JSON metadata file containing all base library type conversions
with consistent B.fromA : A -> B and A.fromB : B -> A signatures. 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().
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.fromNat(nat); // => "123"
let option = C.Option.fromResult(#ok true); // => ?true
let array = [1, 2, 3];
let buffer = C.Buffer.fromArray<Nat>(array);
// Chain conversions with the piping operator
let pipe = (
array
|> C.Iter.fromArray _
|> C.List.fromIter _
|> C.Array.fromList _
);Run the following command to install the mo-convert npm package:
npm i --save-dev mo-convertAccess 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",
}