umd 0.2.0

Universal Markdown - A post-Markdown superset with semantic HTML and extensible syntax
Documentation
# ブロック型プラグイン

**最終更新**: 2026年7月10日

この文書では、UMD で実装済みのブロック型プラグイン構文をまとめます。

## 主要な構文

### 通常のブロック型

- `@function(args){{ ... }}`
  - 複数行のコンテンツを持つブロックプラグインです。
- `@function(args){ ... }`
  - 1 行程度の短いコンテンツに対応する書式です。
- `@function(args)`
  - 引数のみを持つブロック型です。
- `@function()`
  - 引数なしのブロック型です。

### `::: 記法`

- `:::function args`
  - 開始行にプラグイン名と引数を置く代替構文です。
- `:::`
  - 終了行として使用します。

```umd
:::alert warning
Something went wrong
:::
```

## 解析・出力の扱い

ブロック型プラグインは、構文としては認識したうえで、その情報を次のように保持します。

- プラグイン名
- 引数
- コンテンツ

出力時は、通常のプラグインは次の形式で保持されます。

```html
<template class="umd-plugin umd-plugin-{name}">
  <data value="0">arg</data>
  content
</template>
```

標準プラグイン(`@detail` / `@clear` など)は、このテンプレート経由ではなく、直接 HTML を出力する場合があります。

## 例

### 複数行のブロックプラグイン

```umd
@card(info){{
  **Markdown** content
}}
```

### 引数のみのブロックプラグイン

```umd
@toc(2)
```

### `::: 記法`

```umd
:::note info
This is a note.
:::
```

## 制約

- `::: 記法` は入れ子をサポートしません。
- 最初に現れる `:::` のみの行で閉じるため、内部に別の `:::` ブロックや `@` / `&` プラグインを書いても、通常はプラグインとして解釈されず、テキストとして扱われます。
- 実際のプラグイン実行は、ライブラリを利用するホスト側の責務です。