Python package to run JavaScript/TypeScript(Deno backend) in Jupyter notebooks and Google Colab.
Project description
Deno Magic Command
概要
Jypyter(notebook/lab)またはGoogle ColabのコードセルにDeno(JavaScript/TypeScript)を書いて実行するためのマジックコマンドです。
使い方
マジックコマンドの追加
コードセルに以下のコードを貼り付けて実行しマジックコマンドを登録してください。カーネルやランタイムを再起動する度に再実行する必要があります。
%pip install denomagic
import denomagic
# denoのインストール(Google Colab用、他の環境では無視されます
denomagic.install_deno_colab()
# マジックコマンドの登録
denomagic.register_deno_magics()
マジックコマンドの使い方
コードセルの冒頭に以下のようにマジックコマンドを記述してください。実行するとDenoによってコードセル内のJavaScript/TypeScriptコードが実行されます。
%%run_deno
console.log("Hello, world!");
また、コードセルのJavaScript/TypeScriptコードをDenoでトランスパイルしてiframe内で実行するマジックコマンドも用意しています。 以下は、ブラウザ用のライブラリであるp5.jsを使った例です。
%%run_deno_iframe 830 430
import "https://cdn.jsdelivr.net/npm/p5@1.9.4/lib/p5.js";
const sketch = (p: any) => {
let x = 0;
let y = 0;
let speed = 2;
let color: [number, number, number] = [0, 0, 0];
p.setup = () => {
p.createCanvas(800, 400);
x = p.width / 2;
y = p.height / 2;
};
p.draw = () => {
p.background(220);
p.fill(color);
p.ellipse(x, y, 50, 50);
if (p.keyIsDown(p.LEFT_ARROW) === true) {
x -= speed;
}
if (p.keyIsDown(p.RIGHT_ARROW) === true) {
x += speed;
}
if (p.keyIsDown(p.UP_ARROW) === true) {
y -= speed;
}
if (p.keyIsDown(p.DOWN_ARROW) === true) {
y += speed;
}
};
p.mousePressed = () => {
color = [p.random(255), p.random(255), p.random(255)];
};
};
new p5(sketch);
マジックコマンド
%%run_deno
%%run_deno [userval]
コードセル内のJavaScript/TypeScriptをDenoで実行します。
- userval: Jupyterのユーザー変数をDenoで利用するかどうかを設定します。デフォルトはFalseです。
usevalをTrueにすると、Jupyterのユーザー変数をglobalThis.jupyter
を通じて利用できるようになり、セルを超えた変数のやりとりが出来るようになります。
内部ではJupyterとDenoの間をJSONの一時ファイルでやりとりしているため、JSONに変換できないオブジェクトは利用できません。
利用した場合の動作は未定義です。
Jupyterのコードセル内で実行されている場合、globalThis.isJupyterCell
が定義されているので、これがundefined
ではないかどうかを確認することでJupyterのコードセルからの実行なのかどうかを判定できます。
Jupyterユーザー変数を利用した状態でコードセルの途中で終了させたい場合はDeno.exitの代わりにjupyterExit()
を利用してください。
Deno.exitで終了するとJupyterのユーザー変数は更新されません。
%%run_deno_iframe
コードセル内のJavaScript/TypeScriptをDenoでトランスパイルしてiframe内で実行します。
%%run_deno_iframe [width] [height] [srcs]
- width: iframeの幅を指定します。デフォルトは500です。
- height: iframeの高さを指定します。デフォルトは500です。
- srcs: 外部JavaScriptのURLを指定します。複数指定する場合はスペースで区切ります。
%%run_deno_bundle_iframe
コードセル内のJavaScript/TypeScriptをimportしたコードも含めてトランスパイル及びバンドルしてiframe内で実行します。
引数は%%run_deno_iframeと同じです。
%%view_deno_iframe
コードセル内のJavaScript/TypeScriptをDenoでトランスパイルした後生成したHTMLを出力します。
引数は%%run_deno_iframeと同じです。
%%view_deno_bundle_iframe
コードセル内のJavaScript/TypeScriptをimportしたコードも含めてトランスパイル及びバンドルした後生成したHTMLを出力します。
引数は%%run_deno_iframeと同じです。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file denomagic-1.1.0.tar.gz
.
File metadata
- Download URL: denomagic-1.1.0.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6bdfb274a40143cf404898da22ffc97a57b4a260b88234d621924a9dde6169d |
|
MD5 | ff3dd05881efc2bc387ab531b4e59516 |
|
BLAKE2b-256 | 9b2baa0e85f969aee87b92b8609e517ff0b9c8084ab73dc2e2c40aa8d896f03d |
File details
Details for the file denomagic-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: denomagic-1.1.0-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ee84fdf4fcb8a96b56d4da022725dcb297545ae6fc19ea773306d2b342aeb79 |
|
MD5 | fcdecb29428c250cb303c1cec70e7a57 |
|
BLAKE2b-256 | d40c2edab808c4ba4d83e1d51a883da775d939703819244be3fbbcd47e9312ad |