リテラテ .mbt.md ファイル
MoonBit は .mbt.md で終わるリテラテ Markdown ファイルもサポートします。これらのファイルは、パッケージ内で検査済みドキュメントとして置くことも、moon check と moon test の単独ファイル入力として使うこともできます。
単独ファイルの場合は、次を実行します:
moon check README.mbt.md
moon test README.mbt.md
プロジェクト内では、引き続きパッケージ単位の moon check と moon test コマンドを使ってください。
コードフェンスの言語によって、各ブロックの扱いが決まります:
mbt: コンパイルされるが、テストエントリは作成しない MoonBit コード
mbt check: MoonBit のドキュメントテストコード。アサーションを使いたいときは、ブロック内で test { .. } または async test を使います。
mbt nocheck: コンパイルもテストもしない MoonBit コードを表示する
moonbit: ドキュメント用の通常の表示コードブロック。コンパイルもテストもされません。
例えば:
```mbt nocheck
///|
fn helper() -> Int {
42
}
```
```mbt check
///|
test "forty two" {
inspect(40 + 2, content="42")
}
```
```mbt nocheck
///|
fn native_only() -> Unit {
...
}
```
単独の .mbt.md ファイルでは、front matter を使って import や対象バックエンドを指定することもできます:
---
moonbit:
import:
- path: moonbitlang/core/ref
alias: ref
backend:
native
---
```mbt check
fn answer() -> Int {
let cell : @ref.Ref[Int] = { val: 41 }
cell.val + 1
}
///|
test "answer" {
inspect(answer(), content="42")
}
```
ファイルが直接 import できるパッケージを明示したい場合は moonbit.import を使います。モジュール依存関係だけを宣言して、Moon に import を自動生成させたい場合は moonbit.deps を使います。
コメントとドキュメント#
コメント#
コード内の通常のコメントには
//を使います:トップレベルブロックの先頭で
///|をよく見かけることもあります。これは トップレベル項目を明示的に区切るための空のドキュメントコメント行です。これは現時点のドキュメントツールにとって重要であり、将来のキャッシュやその他のツール用途に向けても、トップレベルブロックの境界を明確に保ちます。実際には、///|は通常の MoonBit コードでもドキュメントソースでも役立ちます。ドキュメントコメント#
ドキュメントコメントは、
fn、let、enum、struct、typeなどのトップレベル項目の直前の各行に///を使って書きます。ドキュメントコメントは Markdown で記述します。mbt checkとマークされたドキュメントコメント内の Markdown コードブロックは、ドキュメントテストとして扱われます。moon checkとmoon testはこれらのテストを自動的に検査・実行するため、ドキュメントコメント内の例を常に最新に保てます。テストブロックにしたい場合は、スニペットをtest { .. }で囲んでください:コードスニペットをドキュメントテストとして扱わせたくない場合は、Markdown コードブロックに
mbt check以外の言語 ID を付けてください:現在、ドキュメントテストは常に ブラックボックステスト として扱われます。そのため、private な定義にはドキュメントテストを付けられません。
リテラテ
.mbt.mdファイル#MoonBit は
.mbt.mdで終わるリテラテ Markdown ファイルもサポートします。これらのファイルは、パッケージ内で検査済みドキュメントとして置くことも、moon checkとmoon testの単独ファイル入力として使うこともできます。単独ファイルの場合は、次を実行します:
プロジェクト内では、引き続きパッケージ単位の
moon checkとmoon testコマンドを使ってください。コードフェンスの言語によって、各ブロックの扱いが決まります:
mbt: コンパイルされるが、テストエントリは作成しない MoonBit コードmbt check: MoonBit のドキュメントテストコード。アサーションを使いたいときは、ブロック内でtest { .. }またはasync testを使います。mbt nocheck: コンパイルもテストもしない MoonBit コードを表示するmoonbit: ドキュメント用の通常の表示コードブロック。コンパイルもテストもされません。例えば:
単独の
.mbt.mdファイルでは、front matter を使って import や対象バックエンドを指定することもできます:ファイルが直接 import できるパッケージを明示したい場合は
moonbit.importを使います。モジュール依存関係だけを宣言して、Moon に import を自動生成させたい場合はmoonbit.depsを使います。