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()
.
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 _
);
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",
}