Skip to content
Liminoid
GitHub

Javascript Guide

$ yarn add liminoid-js

or

$ npm install --save liminoid-js

Usage

// easiest to use ES6 imports from the UNPKG CDN
import { Repl } from 'https://unpkg.com/liminoid-js';
// Repl() constuctor is synchronous
const repl = new Repl();
// each call to run() returns a promise that resolves
// to the Repl() object. The value of the executed
// expression is stored as `.value` on the Repl()
repl
.init()
.then(repl => repl.load(['numpy']))
.then(repl => repl.run('import numpy as np'))
.then(repl => repl.run('a = [[1, 0], [0, 1]]'))
.then(repl => repl.run('b = [[4, 1], [2, 2]]'))
.then(repl => repl.run('np.dot(a, b)'))
.then(repl => console.log(repl.value)); //=> Array[ Int32Array [ 4, 1 ], Int32Array [ 2, 2 ] ]

If you want to run a chunk of code in a single call you can use Javascript template literals.

// NOTE: importing a library twice (numpy here) can cause an error
// so we leave the import out of the code chunk.
const code = `
a = [[1, 0], [0, 1]]
b = [[4, 1], [2, 2]]
np.dot(a, b)
`.trim();
// you can use await syntax as long as you are in an async function
const dotProduct = (async () => {
const repl = await new Repl().init();
await repl.load(['numpy']);
await repl.run('import numpy as np');
const result = await repl.run(code);
console.log(result.value); //=> Array[ Int32Array [ 4, 1 ], Int32Array [ 2, 2 ] ]
})();

See how to run this example in a web page: examples/hello-liminoid.html

Edit this page on GitHub
GithubChatTwitterStack OverflowContributingColophonCitation