No project description provided
Project description
ALMO
ALMOは、C++製の拡張Markdownパーサ・静的サイトジェネレータです。
WebAssemblyを使って実行・ジャッジ環境同梱のHTMLファイルを作ることができます。
[!warning] ALMO は開発フェーズのソフトウェアです。致命的なバグが含まれている可能性があり、また頻繁に破壊的な仕様変更が行われます。
機能
ALMOは、Markdown記法によって執筆された記事をHTMLファイルに変換することができます。
加えて、ALMOの拡張構文は、
- 競技プログラミング
- データ分析
- 科学技術計算
をはじめとしたプログラミングに関する様々な記事を作成するために設計されています。
実行可能コードブロック
一つ目の拡張構文は実行可能なコードブロックです。
:::code
# このコードは自分自身を出力します!
# 実行して確かめよう
_='_=%r;print(_%%_)';print(_%_)
:::
という記法は、以下のようなコードブロックを生成します。
さらにコードは実行することができ、その実行はCPythonのWebAssemblyへの移植であるPyodideによっておこなわれます。
そのため、記事の執筆者は自分でサーバを用意することなく、簡単に実行可能なサンプルコードを提供することができます。
Pythonのライブラリの使用 / matplotlib によるグラフ描画
実行可能コードブロックでは、Pythonの主要なライブラリを利用できます。
:::loadlib
numpy
matplotlib
:::
などとすることで、 numpy
, matplotlib
を利用できるようになります。
さらに、matploblib
によるグラフ描画も可能です。
ソースコード内で、
import matplotlib
matplotlib.use("module://matplotlib_pyodide.html5_canvas_backend")
とすると、通常のように plt.show()
するだけで出力欄にインタラクティブなプロットを表示できます。
ジャッジシステム
競技プログラミングなどで用いられるジャッジシステムも提供します。
:::judge
title=Hello ALMO!
sample_in=example/helloalmo/in/sample.txt
sample_out=example/helloalmo/out/sample.txt
in=example/helloalmo/in/*.txt
out=example/helloalmo/out/*.txt
:::
という記法によって、
- サンプル入力は
example/helloalmo/in/sample.txt
- サンプル出力は
example/helloalmo/out/sample.txt
- 入力ファイルは
example/helloalmo/in/*.txt
にマッチする全てのファイル - 出力ファイルは
example/helloalmo/out/*.txt
にマッチする全てのファイル
と対応したジャッジシステムを自動で構築します。
これらは全てデモページで試すことができます。
インターフェース
[!warning] 今後、一般ユーザ向けのインターフェースは https://github.com/abap34/almo-cli で実装されていく予定です。そのため、このセクションの内容は v1.0 では廃止される予定です。
almo <入力> [オプション]
オプション:
-o <出力>
出力ファイル名を指定します。 指定しない場合、HTMLファイルが標準出力に出力されます。-t <テーマ>
テーマを指定します。デフォルトは light です。-c <CSSファイルへのパス>
CSSファイルを指定します。デフォルトは テーマに付属するものが使用されます。-e <テーマ>
エディタのテーマを指定します。デフォルトは light の場合、ace/theme/chrome
, dark の場合ace/theme/monokai
が使用されます。 使用可能なテーマ-d
デバッグモードで実行します。-g
構文木をdot言語として出力します。-h
ヘルプを表示します。
インストール方法
Homebrew
macOS (Apple Silicon) では、 Homebrew を使ってビルド済みのバイナリをインストールできます。
brew tap abap34/homebrew-almo
brew install almo
Docker
abap/almo にビルド済みのイメージがあります。
docker pull abap/almo:latest
docker run abap/almo:latest example.md
Nix
nixpkgs、あるいはflakesを有効にしたNixを使ってalmoをインストールできます。
nix-shell -p almo # almoを利用可能な適切なチャンネルを事前に設定する必要があります
nix profile install "github:NixOS/nixpkgs/HEAD#almo" # almo 0.9.5-alpha on nixpkgs-unstable
nix profile install "github:abap34/almo" # almo 0.9.5-alpha on flakes
nix profile install "github:abap34/almo#unstable" # almo HEAD on flakes
Makeによるビルド
make all
を実行すると、ビルド済みのバイナリが build/almo
に生成され、 Pythonインターフェースが almo.so
として生成されます。
Nixによるビルド
Nixを利用できる環境であれば、以下のコマンドを実行することで./result/bin
以下にビルド結果を生成できます。
また、Pythonインターフェース(almo.so
)は./result/lib
以下に生成されます。
nix build . # almo 0.9.5-alpha
nix build ".#unstable" # almo HEAD
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
File details
Details for the file almo-0.9.6a0.tar.gz
.
File metadata
- Download URL: almo-0.9.6a0.tar.gz
- Upload date:
- Size: 33.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3683b5c1b7d7938994df0449724e6570cbf6359ebe2b3a5cacd19f0e86eb89b |
|
MD5 | 76345c13a0a2f5745c1646f1e29699ee |
|
BLAKE2b-256 | 63ad943e76b693efb3cc18ae599bc90fb93128f707365f730c80c745b6338b05 |