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