Skip to content

feat: Markdownレンダリング機能を実装 - #24

Merged
karimiku merged 1 commit into
mainfrom
feat/markdown-rendering
Jan 16, 2026
Merged

karimiku merged 1 commit into
mainfrom
feat/markdown-rendering

Conversation

@karimiku

Copy link
Copy Markdown
Owner

概要

インタラクティブモードでMarkdownを美しく表示するためのレンダリング機能を実装しました。

関連Issue

Closes #10

依存ライブラリの追加

  • github.com/charmbracelet/glamour v0.10.0

変更内容

新規ファイル

  • internal/render/markdown.go

    • RenderMarkdown(content string, width int) (string, error)
      • glamour.NewTermRenderer を使用
      • AutoStyle(自動でターミナルテーマに合わせる)
      • WordWrap(指定幅で折り返し)
      • エラー時は生テキストでフォールバック
    • RenderMarkdownPreview(content string, width, maxLines int) (string, error)
      • プレビュー用に高さ制限付き
      • maxLines を超えたら「↓ 続きあり (XX行中YY行表示)」を表示
  • internal/render/markdown_test.go

    • 12個のテストケース
    • シンプルなテキスト、見出し、リスト、コードブロック、複合Markdown
    • プレビュー機能のテスト(切り詰めあり/なし)
    • エラーハンドリングのテスト

Markdownレンダリング機能

  • ✨ 見出し: 太字・色付きで表示
  • 🎨 コードブロック: シンタックスハイライト
  • 📝 リスト・チェックボックス: きれいに整形
  • 🔗 リンク: 下線付きで表示
  • 💬 引用・太字・斜体: スタイル適用

使用例

import "github.com/kamiriku/todo_cli/internal/render"

// 完全なレンダリング
markdown := "# タイトル\n\n## セクション\n内容"
rendered, _ := render.RenderMarkdown(markdown, 80)
fmt.Println(rendered)

// プレビュー表示(10行まで)
preview, _ := render.RenderMarkdownPreview(markdown, 80, 10)
fmt.Println(preview)

テスト方法

# ユニットテスト
go test ./internal/render/... -v

# 全テスト
go test ./...

受け入れ基準

  • Markdownが色付きでレンダリングされる
  • コードブロックがシンタックスハイライトされる
  • 指定幅で折り返される
  • レンダリング失敗時でもエラーにならない(生テキストでフォールバック)

チェックリスト

  • 依存ライブラリを追加した
  • テストを追加・更新した
  • ドキュメントを更新した(必要な場合)
  • ローカルでテストが通ることを確認した
  • コードフォーマットを確認した(go fmt)
  • リントエラーがないことを確認した

インタラクティブモードでMarkdownを美しく表示するためのレンダリング機能を実装しました。

依存ライブラリ:
- github.com/charmbracelet/glamour v0.10.0 を追加

実装内容:
- internal/render/markdown.go を作成
  - RenderMarkdown() 関数を実装
    - glamour.NewTermRenderer を使用
    - AutoStyle(自動でターミナルテーマに合わせる)
    - WordWrap(指定幅で折り返し)
    - エラー時は生テキストでフォールバック
  - RenderMarkdownPreview() 関数を実装
    - プレビュー用に高さ制限付き
    - maxLines を超えたら「↓ 続きあり」を表示

- internal/render/markdown_test.go でユニットテストを作成
  - シンプルなテキスト
  - 見出し
  - リスト
  - コードブロック
  - 複合的なMarkdown
  - プレビュー機能(切り詰めあり/なし)
  - エラーハンドリング

Markdownレンダリング機能:
- 見出し(太字・色付き)
- コードブロック(シンタックスハイライト)
- リスト・チェックボックス
- リンク(下線付き)
- 引用・太字・斜体

受け入れ基準:
✅ Markdownが色付きでレンダリングされる
✅ コードブロックがシンタックスハイライトされる
✅ 指定幅で折り返される
✅ レンダリング失敗時でもエラーにならない

Closes #10
@karimiku
karimiku merged commit a2a462a into main Jan 16, 2026
2 checks passed
@karimiku
karimiku deleted the feat/markdown-rendering branch January 16, 2026 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[v2] Markdownレンダリング機能の実装

1 participant