1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CrystalAdvent Calendar 2023

Day 8

Crystalの「コンパイラ」のドキュメントを生成する

Last updated at Posted at 2023-12-08

はじめに

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.crrequire "./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

この記事は以上です。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?