umd 0.2.0

Universal Markdown - A post-Markdown superset with semantic HTML and extensible syntax
Documentation
# 基本Markdown機能

**最終更新**: 2026年5月18日

Universal Markdown が提供する基本 Markdown 機能の実装一覧です。

## 対応範囲

- ATX 見出し (`#` から `######`)
- 段落・改行
- リスト(順序あり/なし)
- 強調(`*text*` → `<em>`, `**text**` → `<strong>`)
- リンク・画像
- 明示的自動リンク(`<https://...>`)
- GFM テーブル
- GFM タスクリスト
- GFM 取り消し線(`~~...~~`)

> [!NOTE]
> 標準CommonMarkでは `__text__` も `**text**` と同じ `<strong>` になりますが、
> UMDでは「複数の書き方に同じ意味を持たせない」という設計方針により
> `__text__` をDiscord風の下線(`<u>`)専用構文として再定義しています。
> 詳細は [architecture.md の設計方針]architecture.md#設計方針を参照してください。

## 見出しアンカー

見出し行の末尾に `{#custom-id}` を書くと、そのアンカーIDを固定できます。
`id` は見出しタグ(`<h1>`〜`<h6>`)自身の属性として付与されます。

- `{#custom-id}` を指定した場合、そのIDがプレフィックスなしでそのまま使われ
  ます。他の見出しIDと重複してもパーサーはエラーにしません(HTML的には無効
  な重複IDになりますが、その回避はユーザーの責任とし、linterでの検出に委ね
  ます)
- 未指定の見出しは文書内の出現順による自動採番で、他のIDと衝突しないよう
  `h-` プレフィックスが付きます(`h-1`, `h-2`, ...)

```text
Input:  # 見出し1
        ## 見出し2
        ### アンカーつき見出し {#anchor}
        ## 見出し3

Output: <h1 id="h-1">見出し1</h1>
        <h2 id="h-2">見出し2</h2>
        <h3 id="anchor">アンカーつき見出し</h3>
        <h2 id="h-3">見出し3</h2>
```

- ID として使える文字は英数字・`_`・`-` のみ
- 詳細・制約は [runtime-features.md のカスタムヘッダーID]../runtime-features.md#カスタムヘッダーidを参照

> [!WARNING]
> 現在の実装はこの仕様通りに動作していません。常に `h-` プレフィックスが付き
> (ユーザー指定の`{#custom-id}`にも適用されてしまう)、`id`は`<hN>`タグ自身
> ではなく別途挿入される空の`<a>`要素に付与され、見出し内にインライン記法が
> あるとアンカー自体が失われることもあります。既知の問題として
> [known-issues.md]../known-issues.md#見出しid処理が設計意図と異なる未修正バグ
> に詳細を記載しています。

## コードブロック拡張

コードブロックの詳細は以下を参照してください。

- [../code-block-extensions.md]../code-block-extensions.md

主な機能:

- `language-*` クラスのパススルー(シンタックスハイライトやMermaid/GeoJSON等のレンダリングはホストアプリケーションの責務)
- `lang:filename` 形式のファイル名付きコードブロック
- インラインコードのカラーサンプル

## 実装の主担当

- `src/parser.rs`
- `src/extensions/fence/code_block.rs`(言語クラスのパススルー・ファイル名)
- `src/extensions/fence/normalize.rs`(`lang:filename` 記法の正規化)
- `src/extensions/fence/protect.rs`(コード区間の保護・カラーサンプル検出)
- `src/extensions/conflict_resolver.rs`

## 主なテスト

- `tests/commonmark.rs`
- `tests/rendering_integration.rs`
- `examples/test_output.rs`
- `examples/code_block_extensions.rs`