表現.md

0.14.0

hyogen ブロック

hyogen-md の制御構文は HTML コメント内に書きます。Markdown プレビューでは表示されません。

通常形: @hg … @endhg

<!--
@hg
include ./components/description.md
@endhg
-->

ショートハンド: @@ … @@

@hg / @endhg と 等価です。短く書けます。

<!--@@
include ./components/description.md
@@-->

書き方のバリエーション

改行あり・同一行・minify 相当のいずれでも認識します。

<!--@hg
const title = "Hello"
@endhg-->
<!--@hg /* ブロックコメントなら同一行でも OK */ @endhg-->
<!--@@ /* ワンライナー */ @@-->

同一行にまとめる場合、// 行コメントは行末までがコメントになるため使えません。その場合は /* */ を使ってください。

コメント

@hg 内では JavaScript と同様のコメントが使えます。

<!--
@hg

// 行コメント

/* ブロックコメント */

@endhg
-->

コードフェンス

コードフェンス(``` / ~~~)内の hyogen ブロックは 無視されます(実行しません)。

一方、フェンス本文中の ${expr} は展開します(@hg テンプレートリテラル内 ${} と同規則)。フェンス外の ${…} はリテラルのままです。\${ でエスケープできます。詳細は 式と変数展開。

```markdown
# ${title}
```

{{ }} / {{{ }}} はフェンス内でも従来どおり展開します。

出力時の扱い

デフォルトでは、レンダリング後の Markdown から hyogen コメントは 除去されます。デバッグ用に残す場合は preserveHgComments: true を指定します。

echo

echo <式> は、囲んでいる @hg / @@ コメントを 評価結果の文字列で置換して本文へ出力します。

<!--
@hg
const greet = "Hello world!"
echo greet
@endhg
-->

出力:

Hello world!

宣言と echo を分けて書くこともできます:

<!--@hg
const greet = "Hello world!"
@endhg-->
<!--@@ echo greet @@-->

同一ブロック内の複数 echo(for / do…while 内を含む)は区切りなしで連結します。null / undefined は空文字になります(&#123;&#123; &#125;&#125; と同じ)。

二層モデル

領域内容
hyogen ブロック内宣言・代入・echo・include・if / each の構造ディレクティブなど
&#123;&#123; &#125;&#125; 内式のみ

関連