markon 0.1.0

A GitHub-styled Markdown previewer with live rendering, TOC support, and mermaid diagrams
# Markon

A lightweight Markdown renderer with GitHub styling, written in Rust.

markon 是一个轻量级的 Markdown 渲染工具,使用 Rust 编写,提供 GitHub 风格的样式。

## Features 功能特性

- **GitHub 样式**: 完整的 GitHub Markdown CSS 样式(深色/浅色主题)
-**代码高亮**: 基于 Syntect 的语法高亮
-**GitHub Alerts**: 支持 NOTE、TIP、IMPORTANT、WARNING、CAUTION 五种提示框
-**Emoji 支持**: Unicode emoji shortcodes(如 `:smile:` → 😄)
-**Mermaid 图表**: 支持流程图、时序图、饼图等
-**主题切换**: 支持 light、dark、auto 三种主题模式
-**表格支持**: GitHub Flavored Markdown (GFM) 表格
-**任务列表**: 复选框任务列表
-**打印优化**: 专业的打印样式和多语言字体支持
-**目录浏览**: 自动列出当前目录的 Markdown 文件
-**零依赖部署**: 所有资源嵌入到单一二进制文件

## Installation 安装

```bash
cargo install --path .
```

或者直接运行:

```bash
cargo run -- [OPTIONS] [FILE]
```

## Usage 使用方法

### 基本用法

```bash
# 显示当前目录的 Markdown 文件列表
markon

# 渲染指定的 Markdown 文件
markon README.md

# 指定端口
markon -p 8080 README.md

# 使用深色主题
markon -t dark README.md

# 使用浅色主题
markon -t light README.md

# 自动主题(根据系统设置)
markon -t auto README.md
```

### 命令行参数

```
Options:
  [FILE]                    要渲染的 Markdown 文件(可选)
  -p, --port <PORT>         服务器端口 [default: 6419]
  -b, --no-browser          不自动打开浏览器
  -t, --theme <THEME>       主题选择: light, dark, auto [default: auto]
  -h, --help                显示帮助信息
  -V, --version             显示版本信息
```

## Supported Markdown Features 支持的 Markdown 特性

- **标题** (H1-H6)
- **粗体/斜体/删除线**
- **列表** (有序/无序)
- **任务列表** (- [ ] / - [x])
- **表格**
- **代码块** (支持语法高亮)
- **引用块**
- **链接和图片**
- **分隔线**
- **脚注**
- **Emoji** (:emoji_name:)
- **Mermaid 图表**
- **GitHub Alerts** ([!NOTE], [!TIP], etc.)

## Mermaid 图表示例

markon 支持 Mermaid 图表渲染,只需使用 \`\`\`mermaid 代码块:

\`\`\`markdown
\`\`\`mermaid
graph TD
    A[开始] --> B{判断}
    B -->|是| C[操作1]
    B -->|否| D[操作2]
\`\`\`
\`\`\`

支持的图表类型:
- 流程图 (graph/flowchart)
- 时序图 (sequenceDiagram)
- 饼图 (pie)
- 甘特图 (gantt)
- 类图 (classDiagram)
- 状态图 (stateDiagram)
- 等等...

## Emoji 支持

使用标准的 emoji shortcodes:

```markdown
:smile: :heart: :rocket: :tada: :sparkles:
```

渲染结果:😄 ❤️ 🚀 🎉 ✨

## GitHub Alerts 示例

使用特殊的 blockquote 语法创建提示框:

```markdown
> [!NOTE]
> 这是一条提示信息。

> [!TIP]
> 这是一条技巧提示。

> [!IMPORTANT]
> 这是一条重要信息。

> [!WARNING]
> 这是一条警告信息。

> [!CAUTION]
> 这是一条严重警告。
```

支持的类型:
- **NOTE** (蓝色) - 一般性提示信息
- **TIP** (绿色) - 有用的技巧或建议
- **IMPORTANT** (紫色) - 关键信息
- **WARNING** (黄色) - 需要注意的警告
- **CAUTION** (红色) - 危险或严重警告

## 项目来源

本项目移植自 [go-grip](https://github.com/kookyleo/go-grip),使用 Rust 重新实现。

### 主要区别

| 特性 | go-grip | markon |
|------|---------|---------|
| 语言 | Go | Rust |
| GitHub Alerts | ✅ | ✅ |
| Emoji | 自定义映射 | Unicode (emojis crate) |
| 热重载 | ✅ | ❌ 不支持 |
| 自动打开浏览器 | ✅ | ❌ 不支持 |
| 打印优化 | ✅ | ✅ |

## 技术栈

- **Markdown 解析**: [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark)
- **语法高亮**: [syntect](https://github.com/trishume/syntect)
- **HTTP 服务器**: [axum](https://github.com/tokio-rs/axum) + [tokio](https://tokio.rs/)
- **模板引擎**: [tera](https://github.com/Keats/tera)
- **静态资源嵌入**: [rust-embed](https://github.com/pyrossh/rust-embed)
- **Emoji**: [emojis](https://github.com/rosetta-rs/emojis)
- **图表渲染**: [Mermaid.js](https://mermaid.js.org/)

## 开发

### 项目结构

```
markon/
├── src/
│   ├── main.rs         # 程序入口
│   ├── server.rs       # HTTP 服务器
│   ├── markdown.rs     # Markdown 渲染器
│   └── assets.rs       # 静态资源管理
├── assets/
│   ├── css/            # GitHub 样式表
│   │   ├── github-markdown-dark.css
│   │   ├── github-markdown-light.css
│   │   └── github-print.css
│   ├── js/             # JavaScript 库
│   │   └── mermaid.min.js
│   └── templates/      # HTML 模板
│       ├── layout.html
│       └── directory.html
├── Cargo.toml
├── README.md
└── MIGRATION_PLAN.md   # 迁移方案文档
```

### 构建

```bash
# Debug 模式
cargo build

# Release 模式
cargo build --release

# 运行测试
cargo test

# 运行示例
cargo run -- TEST.md
```

## License 许可证

Apache License 2.0

## 致谢

- [go-grip]https://github.com/kookyleo/go-grip - 原始项目
- [GitHub Markdown CSS]https://github.com/sindresorhus/github-markdown-css - 样式来源
- 所有开源依赖库的贡献者

## 相关链接

- 原项目: https://github.com/kookyleo/go-grip
- GitHub Markdown 样式: https://github.com/sindresorhus/github-markdown-css
- Mermaid 文档: https://mermaid.js.org/