mdja
日本語に最適化されたMarkdownパーサー
特徴
- ✨ CommonMark + GFM完全対応 - comrak基盤で高速・正確
- ✨ 日本語見出しアンカー生成 -
# はじめに→id="hajimeni" - ✨ 目次(TOC)自動生成 - Markdown形式で目次を出力
- ✨ 読了時間計算 - 日本語文字数を考慮した精密な計算
- ✨ frontmatter解析 - YAMLメタデータの自動抽出
- ✨ GFM機能 - テーブル、タスクリスト、取り消し線、自動リンクなど
- ✨ マルチ言語対応 - Rust、Python、JavaScript(WASM)、CLIツール
- ✨ シンプルなAPI - 1行でパース可能
- ✨ 充実したテスト - 12個のテスト(ユニット + ドキュメント)
インストール
Rustから使う
Cargo.tomlに追加:
[]
= "0.1.0"
Pythonから使う(予定)
JavaScriptから使う(予定)
CLIツールとして使う
基本的な使い方
Rust
use Document;
シンプルな変換
use Document;
let html = to_html;
println!;
CLIツール
# ファイルからHTML生成
# 標準出力に表示
# 標準入力から読み込み
|
API リファレンス
Document::parse(markdown: &str) -> Document
Markdownをパースして構造化データを返します。
let doc = parse;
返り値: Document
Document::to_html(markdown: &str) -> String
シンプルなHTML変換(メタデータ不要な場合)。
let html = to_html;
Heading
機能詳細
frontmatter解析
YAML形式のメタデータを自動抽出します。
title: 記事タイトル
author: Taro
date: 2025-01-17
tags: rust, markdown
let doc = parse;
println!; // "記事タイトル"
println!; // "Taro"
日本語見出しアンカー
日本語の見出しからアンカーIDを自動生成します。
↓
はじめに
インストール方法
let doc = parse;
assert_eq!;
目次(TOC)生成
見出しから自動的に目次を生成します。
let doc = parse;
println!;
// - [H1](#h1)
// - [H2](#h2)
// - [H3](#h3)
読了時間計算
日本語と英語の文字数を考慮して読了時間を計算します。
- 日本語: 400文字/分
- 英語: 200単語/分
let doc = parse;
assert_eq!; // 2分
GFM(GitHub Flavored Markdown)
テーブル
タスクリスト
- -
取り消し線
~~古い情報~~ 新しい情報
自動リンク
https://example.com
脚注
本文[^1]
ユースケース
- 静的サイトジェネレーター - ブログ記事のHTML変換
- CMSシステム - ユーザー入力のMarkdown処理
- ドキュメント生成 - 技術文書のHTML化
- APIサーバー - Markdown→HTML変換エンドポイント
- CLIツール - バッチ処理でのMarkdown変換
- Webアプリケーション - WASM経由でブラウザ内変換
サンプル実行
# サンプルプログラムを実行
# テストを実行
# CLIツールをビルド
# CLIツールを使用
# ドキュメントを生成
パフォーマンス
comrakをベースにしているため、高速かつ正確なパースが可能です。
- CommonMark準拠
- GFM完全対応
- 大規模ドキュメントにも対応
技術スタック
- パーサー: comrak (CommonMark + GFM)
- YAML: serde_yaml
- 正規表現: regex
- Python bindings: PyO3 (オプション)
- WASM bindings: wasm-bindgen (オプション)
ロードマップ
- 基本的なMarkdownパース
- frontmatter解析
- 日本語見出しアンカー生成
- 目次生成
- 読了時間計算
- GFM対応
- CLIツール
- Pythonバインディング
- WASMバインディング
- シンタックスハイライト統合
- カスタムレンダラー
- プラグインシステム
コントリビューション
プルリクエストを歓迎します!
- このリポジトリをフォーク
- フィーチャーブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - ブランチにプッシュ (
git push origin feature/amazing-feature) - プルリクエストを作成
ライセンス
このプロジェクトは、以下のいずれかのライセンスでデュアルライセンスされています:
- MITライセンス (LICENSE-MIT または http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE または http://www.apache.org/licenses/LICENSE-2.0)
お好みのライセンスをお選びください。
謝辞
このライブラリはcomrakをベースにしており、日本語ブログ・ドキュメント向けに最適化された追加機能を提供しています。
English Summary
mdja - Japanese-optimized Markdown parser
Features
- CommonMark + GFM support (powered by comrak)
- Japanese heading anchor generation (
# はじめに→id="hajimeni") - Automatic table of contents generation
- Reading time calculation (Japanese character aware)
- Frontmatter parsing (YAML)
- Multi-language support (Rust, Python, JavaScript, CLI)
- Simple API
Installation
[]
= "0.1.0"
Usage
use Document;
let doc = parse;
println!;
println!;
License
MIT OR Apache-2.0