はじめに
Crystal言語のコンパイラのソースコードを読んでみたいと思った人はいますか?
私は読んでみたいです(理解できるかどうかは別にして)
しかし、普通にドキュメントを生成しようとすると、コンパイラを構成するモジュールやクラスはドキュメントにならないようになっています。そこでどうやってコンパイラのドキュメントを生成すればいいか調べました。
結論
git clone https://github.com/crystal-lang/crystal
cd crystal
make docs DOCS_OPTIONS=src/compiler/crystal.cr
ドキュメントの生成
まずは普通のCrystalのドキュメントを生成してみましょう。
git clone https://github.com/crystal-lang/crystal
cd crystal
make docs
これを実行すると docs
ディレクトリが生成されて、普通のドキュメントが生成されます。しかし、これだとコンパイラのドキュメントは生成されません。
Makefileの中を覗いてみると make docs
では
.PHONY: docs
docs: ## Generate standard library documentation
$(call check_llvm_config)
./bin/crystal docs src/docs_main.cr $(DOCS_OPTIONS) --project-name=Crystal --project-version=$(CRYSTAL_VERSION) --source-refname=$(CRYSTAL_CONFIG_BUILD_COMMIT)
上記のように src/docs_main.cr
を呼び出していることがわかります。
そこで、docs_main.cr
に require "./compiler/requires.cr
を追加します。
diff --git a/src/docs_main.cr b/src/docs_main.cr
index 661163677..1f7cbb04b 100644
--- a/src/docs_main.cr
+++ b/src/docs_main.cr
@@ -5,6 +5,7 @@
require "./annotations"
require "./big"
require "./compiler/crystal/macros"
+require "./compiler/requires.cr"
require "./compress/**"
require "./crypto/**"
require "./crystal/syntax_highlighter/*"
これで make docs
すればコンパイラのドキュメントも生成してくれるようになります。
やったね!
追記
でもよく見ると、環境変数で次のようにした方が簡単です。straight-shoota さんに教えてもらいました。
git clone https://github.com/crystal-lang/crystal
cd crystal
make docs DOCS_OPTIONS=src/compiler/crystal.cr
この記事は以上です。