Installation
$ yarn add runthedocs-repl
or
$ npm install --save runthedocs-repl
Usage
// easiest to use ES6 imports from the CDN
import { Repl } from 'https://cdn.skypack.dev/runthedocs-repl';
// 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 ] ]
})();
Contributing/Requests
Open an issue or post a message in the chatroom. If you would like to contribute to the project (code, documentation, tutorials, etc.) see the contributing guide for how to get started
License
Run the Docs uses the GNU Affero General Public License Version 3.0.