📝 Go Text Format

🎯 概要: 堅牢な構造化パースを持つ Markdown/Webtoon フォーマッター
Go Text Format は、Go言語で実装された、Markdownから完全なHTMLドキュメントへの変換、および 構造化されたWebtoonビューアの生成 を行うためのCLIツールです。
通常の文書変換に加え、Markdown内のメタデータを解析して画像パネルと吹き出しを再構成する Webtoonモード を搭載しています。クリーンアーキテクチャを採用し、I/O、構造解析、ドメインモデル、レンダリングの責務を厳密に分離することで、高い保守性と拡張性を実現しています。
本プロジェクトは、クリーンなアーキテクチャを採用し、I/O、変換、レンダリングの責務を厳密に分離しています。
✨ 特徴
- ハイブリッド変換エンジン: 通常の文書作成(
Document)と、縦スクロールマンガ形式(Webtoon)の2つの出力モードをサポート。
- 高性能な資産管理:
go:embed を活用し、HTMLテンプレートやCSSをバイナリに内蔵。実行ファイル一つでポータブルに動作。
🚀 インストール
Goモジュールとしてプロジェクトに追加します。
go get github.com/shouni/go-text-format
🔨 使用方法
# Webtoonモードで実行(改行は自動的に有効になります)
./bin/format convert -i script.md -o viewer.html --mode webtoon
# 明示的に改行オプションを有効にして変換
./bin/format convert -i article.md -o output.html --hard-wraps
# 標準入力から読み込み、標準出力へ書き出す(パイプライン利用)
cat script.md | ./bin/format convert --mode webtoon > viewer.html
convert サブコマンドのフラグ一覧
| フラグ |
ショート |
説明 |
デフォルト値 |
--mode |
-m |
変換モード (document or webtoon) |
document |
--input |
-i |
読み込むMarkdownファイルのパス |
標準入力 |
--output |
-o |
書き出すHTMLファイルのパス |
標準出力 |
--title |
なし |
HTMLのタイトル。省略時はMarkdownの最初のH1から抽出 |
なし |
--hard-wraps |
なし |
改行を <br> に変換(Webtoonモードでは自動有効) |
false |
--enable-unsafe-html |
なし |
HTMLタグの直接入力を許可する |
false |
📐 プロジェクト構成
| パッケージ |
役割 |
pkg/domain |
ドメインモデル(Webtoon, Panel, Dialogue)の定義。 |
pkg/parser |
状態管理型パーサー。複数行にわたる属性値のキャプチャを担当。 |
pkg/renderer |
html/template によるHTML生成。CSS変数を活用した動的レイアウト。 |
pkg/builder |
依存関係注入(DI)。設定に応じた適切なコンポーネントの組み立て。 |
pkg/md2html |
Goldmarkをラップした低レベル変換。正規表現による高速なタイトル抽出。 |
github.com/yuin/goldmark: 高速なMarkdownパーサーライブラリ。
github.com/shouni/go-cli-base: CLIアプリケーションの基盤フレームワーク。
🎨 WebtoonモードのMarkdown仕様
# 作品タイトル
ここに作品の説明文を記述します。


📜 ライセンス (License)
このプロジェクトは MIT License の下で公開されています。