Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

almo-0.9.6a0.tar.gz (33.1 kB view details)

Uploaded Source

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

Hashes for almo-0.9.6a0.tar.gz
Algorithm Hash digest
SHA256 b3683b5c1b7d7938994df0449724e6570cbf6359ebe2b3a5cacd19f0e86eb89b
MD5 76345c13a0a2f5745c1646f1e29699ee
BLAKE2b-256 63ad943e76b693efb3cc18ae599bc90fb93128f707365f730c80c745b6338b05

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page