use mdja::Document;
fn main() {
println!("=== mdja デモ ===\n");
println!("【基本的なMarkdown変換】");
let markdown = "# はじめに\n\nこれは**太字**で、これは*斜体*です。";
let doc = Document::parse(markdown);
println!("入力:\n{}\n", markdown);
println!("HTML出力:\n{}\n", doc.html);
println!("【frontmatter解析】");
let markdown_with_meta = r#"---
title: Rustで始めるMarkdown
author: Taro
date: 2025-01-17
tags: rust, markdown
---
# Markdownパーサー
**mdja**は日本語に最適化されたMarkdownパーサーです。
"#;
let doc = Document::parse(markdown_with_meta);
println!("メタデータ:");
for (key, value) in &doc.metadata {
println!(" {}: {}", key, value);
}
println!();
println!("【目次生成】");
let markdown_with_toc = r#"
# はじめに
## インストール方法
### Rustから使う
### Pythonから使う
## 使い方
### 基本的な使い方
### 応用例
"#;
let doc = Document::parse(markdown_with_toc);
println!("目次:\n{}", doc.toc);
println!("【読了時間計算】");
let long_text = "あ".repeat(800);
let doc = Document::parse(&long_text);
println!("テキスト: {}文字", long_text.len());
println!("読了時間: {}分\n", doc.reading_time);
println!("【GFM(GitHub Flavored Markdown)機能】");
println!("テーブル:");
let table_md = r#"
| 機能 | 対応状況 |
|------|---------|
| テーブル | ✓ |
| タスクリスト | ✓ |
| 取り消し線 | ✓ |
"#;
let doc = Document::parse(table_md);
println!("{}\n", doc.html);
println!("タスクリスト:");
let tasklist_md = r#"
- [x] 基本機能実装
- [x] テスト作成
- [ ] ドキュメント整備
- [ ] crates.io公開
"#;
let doc = Document::parse(tasklist_md);
println!("{}\n", doc.html);
println!("取り消し線:");
let strikethrough_md = "~~古い情報~~ 新しい情報";
let doc = Document::parse(strikethrough_md);
println!("{}\n", doc.html);
println!("【日本語見出しアンカー】");
let jp_headings = r#"
# はじめに
## インストール方法
## 使い方
### 基本的な使い方
"#;
let doc = Document::parse(jp_headings);
println!("見出し一覧:");
for heading in &doc.headings {
println!(
" {} (id: {}) - レベル{}",
heading.text, heading.id, heading.level
);
}
println!();
println!("【シンタックスハイライト対応】");
let code_md = r#"
```rust
fn main() {
println!("Hello, mdja!");
}
```
"#;
let doc = Document::parse(code_md);
println!("{}", doc.html);
}