Markdownテーブル形式に対応 #8

Merged
kamat merged 2 commits from feature/markdown-table-format into main 2026-09-05 16:59:36 +09:00
Owner

概要

Markdownのテーブル記法を表形式として読み書きできるようにします。

変更内容

  • markdown / md 形式と拡張子推定を追加
  • GFM風のヘッダー、区切り行、alignment marker、任意の外側パイプに対応
  • セル内のパイプ、バックスラッシュ、改行、前後空白を可逆に保持
  • 全対応形式間の変換マトリクステストとドキュメントを更新

検証

  • go test ./...
  • go vet ./...
  • git diff --check
## 概要 Markdownのテーブル記法を表形式として読み書きできるようにします。 ## 変更内容 - `markdown` / `md` 形式と拡張子推定を追加 - GFM風のヘッダー、区切り行、alignment marker、任意の外側パイプに対応 - セル内のパイプ、バックスラッシュ、改行、前後空白を可逆に保持 - 全対応形式間の変換マトリクステストとドキュメントを更新 ## 検証 - `go test ./...` - `go vet ./...` - `git diff --check`
agent added 1 commit 2026-09-05 16:47:06 +09:00
Add Markdown table format support
CI / test (pull_request) Failing after 1m6s
60a43a42e5
agent added 1 commit 2026-09-05 16:52:32 +09:00
Require patched Go 1.25 release
CI / test (pull_request) Successful in 45s
83c2c9e59f
Author
Owner

検証内容と結果

コミット 83c2c9e に対して、以下を再実行しました。

1. Markdown固有の単体テスト

  • TestResolveMarkdownFormatFromFileExtension — PASS
    • .md から markdown 形式を推定できることを確認
  • TestMarkdownTableRoundTrip — PASS
    • ヘッダー・行の往復変換を確認
    • セル内の |、バックスラッシュ、実改行、文字列としての \n を区別して保持できることを確認
  • TestMarkdownTableAcceptsAlignmentAndOptionalOuterPipes — PASS
    • 外側の | を省略した表を読み込めることを確認
    • :--- / ---: / :---: のalignment markerを受理することを確認
    • \| をセル内のパイプとして復元できることを確認
  • TestStructuredRecordsWithoutScalarFieldsAreRejectedForTables/markdown_* — PASS
    • 表で安全に表現できない {} / [{}] を黙って欠落させずエラーにすることを確認
  • TestEmptyRecordListCanRoundTripThroughDelimitedFormats/markdown — PASS
    • 空レコード配列 [] の往復を確認

2. 全対応形式の変換マトリクス

TestConversionMatrixPreservesRepresentativeTable — 49/49 PASS

対象形式: JSON / YAML / TOML / CSV / TSV / XLSX / Markdown

各形式から各形式への7×7通りを変換後、TSVへ正規化して次を比較しています。

  • boolean・整数
  • 日本語文字列
  • セル内改行
  • 前後空白
  • comma・tab・quote

Markdownが関係する13通り(他6形式→Markdown、Markdown→他6形式、Markdown→Markdown)もすべてPASSしています。

3. CLI実動確認

YAML → Markdown:

| department | id | items[0].qty | items[0].sku | user.email | user.name |
| --- | --- | --- | --- | --- | --- |
| Sales | 1 | 2 | A-001 | [email protected] | Alice |
| Engineering | 2 | 5 | B-002 | [email protected] | Bob |

Markdown → JSONでは、入力セル Alice \| Bob と line 1
line 2 が次のように復元されました。

{
  "id": 1,
  "name": "Alice | Bob",
  "note": "line 1\nline 2"
}

4. 品質・セキュリティ検査

  • go test -v ./cmd/dataxl — PASS
  • go vet ./... — PASS
  • [email protected] ./... — PASS: No vulnerabilities found
  • git diff --check — PASS
  • Gitea Actions CI / test (pull_request) — PASS (45s)

なお、最初のCI失敗はGo 1.25.0標準ライブラリのGO-2026-6088検出によるもので、最低バージョンを修正版のGo 1.25.13へ上げた後、同じCI一式が成功しています。

## 検証内容と結果 コミット `83c2c9e` に対して、以下を再実行しました。 ### 1. Markdown固有の単体テスト - `TestResolveMarkdownFormatFromFileExtension` — **PASS** - `.md` から `markdown` 形式を推定できることを確認 - `TestMarkdownTableRoundTrip` — **PASS** - ヘッダー・行の往復変換を確認 - セル内の `|`、バックスラッシュ、実改行、文字列としての `\n` を区別して保持できることを確認 - `TestMarkdownTableAcceptsAlignmentAndOptionalOuterPipes` — **PASS** - 外側の `|` を省略した表を読み込めることを確認 - `:---` / `---:` / `:---:` のalignment markerを受理することを確認 - `\|` をセル内のパイプとして復元できることを確認 - `TestStructuredRecordsWithoutScalarFieldsAreRejectedForTables/markdown_*` — **PASS** - 表で安全に表現できない `{}` / `[{}]` を黙って欠落させずエラーにすることを確認 - `TestEmptyRecordListCanRoundTripThroughDelimitedFormats/markdown` — **PASS** - 空レコード配列 `[]` の往復を確認 ### 2. 全対応形式の変換マトリクス `TestConversionMatrixPreservesRepresentativeTable` — **49/49 PASS** 対象形式: JSON / YAML / TOML / CSV / TSV / XLSX / Markdown 各形式から各形式への7×7通りを変換後、TSVへ正規化して次を比較しています。 - boolean・整数 - 日本語文字列 - セル内改行 - 前後空白 - comma・tab・quote Markdownが関係する13通り(他6形式→Markdown、Markdown→他6形式、Markdown→Markdown)もすべてPASSしています。 ### 3. CLI実動確認 YAML → Markdown: ```text | department | id | items[0].qty | items[0].sku | user.email | user.name | | --- | --- | --- | --- | --- | --- | | Sales | 1 | 2 | A-001 | [email protected] | Alice | | Engineering | 2 | 5 | B-002 | [email protected] | Bob | ``` Markdown → JSONでは、入力セル `Alice \| Bob` と `line 1
line 2` が次のように復元されました。 ```json { "id": 1, "name": "Alice | Bob", "note": "line 1\nline 2" } ``` ### 4. 品質・セキュリティ検査 - `go test -v ./cmd/dataxl` — **PASS** - `go vet ./...` — **PASS** - `[email protected] ./...` — **PASS: No vulnerabilities found** - `git diff --check` — **PASS** - Gitea Actions `CI / test (pull_request)` — **PASS (45s)** なお、最初のCI失敗はGo 1.25.0標準ライブラリのGO-2026-6088検出によるもので、最低バージョンを修正版のGo 1.25.13へ上げた後、同じCI一式が成功しています。
kamat merged commit 4c524e7a24 into main 2026-09-05 16:59:36 +09:00
kamat deleted branch feature/markdown-table-format 2026-09-05 16:59:36 +09:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: agent/dataxl#8