nargo-document 0.0.0

Nargo documentation tool
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
# nargo-document

<div align="center">
  <img src="https://trae-api-cn.mchost.guru/api/ide/v1/text_to_image?prompt=modern%20documentation%20generator%20tool%20logo%20with%20blue%20and%20orange%20gradient%2C%20minimalist%2C%20professional&image_size=square_hd" alt="Nargo Document Logo" width="150" height="150">
  <h3>📄 Nargo 框架的文档生成器</h3>
  <p>用于生成 Nargo 项目的文档,支持多种格式和丰富的插件系统</p>
</div>

## 🎯 简介

`nargo-document` 是 Nargo 框架的文档生成器,用于生成 Nargo 项目的文档。它支持多种输出格式,提供完整的插件系统和灵活的主题系统,为 Nargo 项目提供专业、美观的文档解决方案。作为 Nargo 生态系统的重要组成部分,`nargo-document` 帮助开发者快速生成高质量的项目文档。

## ✨ 核心特性

### 多格式支持
- **HTML 文档**: 生成美观、响应式的 HTML 文档站点
- **Markdown 文档**: 生成标准的 Markdown 文档
- **PDF 文档**: 生成高质量的 PDF 文档
- **静态资源管理**: 自动处理和优化静态资源

### 插件系统
- **完整的插件架构**: 支持在文档生成过程中扩展和增强功能
- **内置插件**: KaTeX(数学公式)、Mermaid(图表)、Shiki(代码高亮)、Prism(代码高亮)、Container(自定义容器)
- **插件钩子**: 插件通过钩子方法在文档渲染的不同阶段进行介入
- **自定义插件**: 支持开发和集成自定义插件

### 主题系统
- **默认主题**: 提供完整的文档站点主题和样式
- **响应式设计**: 适配不同屏幕尺寸
- **多语言支持**: 支持多语言文档
- **自定义主题**: 支持创建和使用自定义主题

### 文档服务器
- **本地预览**: 提供本地文档服务器,便于预览和测试
- **实时更新**: 支持文档的实时更新
- **静态文件服务**: 提供静态文件服务功能

### 高级功能
- **前置元数据**: 支持 Markdown 前置元数据(Frontmatter)
- **导航生成**: 自动生成文档导航
- **搜索功能**: 内置文档搜索功能
- **代码高亮**: 支持多种编程语言的代码高亮

## 🚀 使用方法

### 命令行使用

```bash
# 生成 HTML 文档
nargo docs generate --format html --output ./docs

# 生成 Markdown 文档
nargo docs generate --format markdown --output ./docs

# 生成 PDF 文档
nargo docs generate --format pdf --output ./docs

# 启动文档服务器
nargo docs serve --port 8080

# 启动文档服务器并监听变化
nargo docs serve --port 8080 --watch
```

### API 使用

```rust
use nargo_document::{DocumentGenerator, DocumentOptions};
use std::path::Path;

fn main() -> anyhow::Result<()> {
    // 创建文档生成器
    let generator = DocumentGenerator::new();

    // 配置生成选项
    let options = DocumentOptions {
        input_dir: Path::new("./docs-source").to_path_buf(),
        output_dir: Path::new("./docs").to_path_buf(),
        format: "html".into(),
        theme: "default".into(),
        plugins: vec!["katex", "mermaid", "shiki", "container"],
        ..Default::default()
    };

    // 生成文档
    generator.generate(&options)?;

    println!("文档生成成功!");
    Ok(())
}
```

## 🔧 插件系统

### 插件架构

插件系统包含以下核心组件:

- **DocumentPlugin Trait**: 定义插件需要实现的钩子方法
- **PluginMeta**: 插件元数据,包含名称、版本、描述
- **PluginContext**: 插件上下文,提供文档内容、前置元数据、文档路径
- **PluginRegistry**: 插件注册表,用于管理和注册文档插件

### 内置插件

#### KaTeX 插件

KaTeX 数学公式渲染插件,支持行内公式和块级公式。

**功能:**
- 行内公式:`$E=mc^2$`
- 块级公式:`$$\sum_{i=1}^n i = \frac{n(n+1)}{2}$$`

**使用示例:**

```markdown
Einstein's equation $E=mc^2$ is famous.

The sum of the first n integers is:

$$\sum_{i=1}^n i = \frac{n(n+1)}{2}$$
```

#### Mermaid 插件

Mermaid 图表渲染插件,支持流程图、时序图、甘特图等。

**功能:**
- 流程图
- 时序图
- 类图
- 状态图
- 甘特图

**使用示例:**

```markdown
```mermaid
graph TD
    A[Start] --> B{Is it working?}
    B -->|Yes| C[Great!]
    B -->|No| D[Debug]
```
```

#### Shiki 插件

Shiki 代码高亮插件,提供代码块语法高亮功能。

**功能:**
- 支持多种编程语言语法高亮
- 高质量的语法着色

**使用示例:**

```markdown
```rust
fn main() {
    println!("Hello, world!");
}
```
```

#### Prism 插件

Prism 代码高亮插件,提供代码块语法高亮功能。

**功能:**
- 支持多种编程语言语法高亮
- 轻量级的语法着色库

**使用示例:**

```markdown
```javascript
function hello() {
    console.log("Hello, world!");
}
```
```

#### Container 插件

自定义容器插件,提供信息提示、警告提示等容器组件。

**内置容器类型:**
- `tip`:提示信息
- `warning`:警告信息
- `danger`:危险信息
- `info`:信息提示

**使用示例:**

```markdown
:::tip
这是一个提示信息
:::

:::warning
这是一个警告信息
:::

:::danger
这是一个危险信息
:::

:::info
这是一个信息提示
:::
```

**自定义容器配置:**

可以通过配置自定义容器,包括标题、图标和 CSS 类。

## 🎨 主题系统

### 默认主题

默认主题提供完整的文档站点主题和样式,包括:

- 响应式布局
- 导航栏
- 侧边栏导航
- 页脚
- 多语言支持

### 主题配置

默认主题使用 `PageContext` 进行页面渲染,包含以下配置项:

- `page_title`:页面标题
- `site_title`:站点标题
- `content`:页面内容
- `nav_items`:导航栏项目
- `sidebar_groups`:侧边栏组
- `current_path`:当前页面路径
- `has_footer`:是否有页脚
- `footer_message`:页脚消息
- `footer_copyright`:页脚版权
- `current_lang`:当前语言
- `available_locales`:可用语言列表
- `root_path`:相对于根目录的路径前缀

## 🔧 配置选项

配置文件:`nargodoc.config.toml`

```toml
[general]
title = "Nargo Documentation"
author = "Nargo Team"
description = "Nargo framework documentation"

[output]
directory = "./docs"
format = "html"

[server]
port = 8080
host = "127.0.0.1"
watch = true

[generator.html]
template = "default"
theme = "default"

[plugins]
enabled = ["katex", "mermaid", "shiki", "container"]

[plugins.container]
default_icons = true

[generator.pdf]
margin = [20, 20, 20, 20]
font = "Helvetica"
font_size = 12

[theme]
name = "default"

[theme.nav]
items = [
    { text = "首页", link = "/" },
    { text = "文档", link = "/docs/" },
    { text = "API", link = "/api/" }
]

[theme.sidebar]
groups = [
    { 
        text = "入门指南",
        items = [
            { text = "快速开始", link = "/guide/quick-start" },
            { text = "安装", link = "/guide/installation" }
        ]
    },
    {
        text = "核心概念",
        items = [
            { text = "架构", link = "/concepts/architecture" },
            { text = "配置", link = "/concepts/configuration" }
        ]
    }
]

[theme.footer]
enabled = true
message = "Powered by Nargo Document"
copyright = "© 2024 Nargo Team"

[theme.locales]
default = "zh-CN"
available = [
    { code = "zh-CN", label = "简体中文" },
    { code = "en-US", label = "English" }
]
```

## 📊 与其他文档生成工具对比

| 特性 | nargo-document | MkDocs | Docusaurus | Sphinx |
|------|---------------|--------|------------|--------|
| 多格式支持 | ✅ (HTML, Markdown, PDF) | ✅ (HTML) | ✅ (HTML) | ✅ (HTML, PDF) |
| 插件系统 | ✅ (完整) | ✅ (完整) | ✅ (完整) | ✅ (完整) |
| 主题系统 | ✅ (完整) | ✅ (完整) | ✅ (完整) | ✅ (完整) |
| 文档服务器 | ✅ (完整) | ✅ (完整) | ✅ (完整) | ❌ (有限) |
| 数学公式支持 | ✅ (KaTeX) | ✅ (通过插件) | ✅ (通过插件) | ✅ (通过插件) |
| 图表支持 | ✅ (Mermaid) | ✅ (通过插件) | ✅ (通过插件) | ✅ (通过插件) |
| 代码高亮 | ✅ (Shiki, Prism) | ✅ (通过插件) | ✅ (通过插件) | ✅ (通过插件) |
| 多语言支持 | ✅ (完整) | ✅ (完整) | ✅ (完整) | ✅ (完整) |
| 性能 | ⚡⚡⚡ (快速) | ⚡⚡ (中等) | ⚡ (一般) | ⚡ (一般) |

## 🎯 应用场景

### 项目文档
在 Nargo 项目中,`nargo-document` 可以生成专业、美观的项目文档,帮助开发者和用户了解项目的功能和使用方法。

### API 文档
在 API 开发中,`nargo-document` 可以生成详细的 API 文档,包括接口说明、参数描述和示例代码。

### 技术文档
在技术团队中,`nargo-document` 可以生成技术文档,包括架构设计、技术方案和最佳实践。

### 教程和指南
在教育和培训中,`nargo-document` 可以生成教程和指南,帮助用户快速上手和掌握相关技术。

## 🔧 核心 API

### DocumentGenerator
文档生成器,负责生成文档:
- **new**: 创建新的文档生成器实例
- **generate**: 生成文档
- **serve**: 启动文档服务器
- **watch**: 监听文件变化并自动更新文档

### DocumentOptions
文档生成选项,控制文档生成的行为:
- **input_dir**: 输入目录
- **output_dir**: 输出目录
- **format**: 输出格式(html, markdown, pdf)
- **theme**: 主题名称
- **plugins**: 启用的插件列表
- **watch**: 是否监听文件变化

### PluginRegistry
插件注册表,管理和注册文档插件:
- **new**: 创建新的插件注册表
- **register**: 注册插件
- **get_plugin**: 获取插件
- **get_enabled_plugins**: 获取启用的插件

### ThemeManager
主题管理器,管理和应用文档主题:
- **new**: 创建新的主题管理器
- **load_theme**: 加载主题
- **apply_theme**: 应用主题到文档

## 🏗️ 目录结构

- `src/` - 源代码
  - `config/` - 配置管理
  - `generator/` - 文档生成器
    - `html/` - HTML 生成器
    - `markdown/` - Markdown 生成器
    - `pdf/` - PDF 生成器
    - `static_/` - 静态资源生成器
  - `plugin/` - 插件系统
    - `katex.rs` - KaTeX 数学公式插件
    - `mermaid.rs` - Mermaid 图表插件
    - `shiki.rs` - Shiki 代码高亮插件
    - `prism.rs` - Prism 代码高亮插件
    - `container.rs` - 自定义容器插件
    - `mod.rs` - 插件系统核心
  - `theme/` - 主题系统
    - `default_theme.rs` - 默认主题
    - `dark_theme.rs` - 暗黑主题
    - `tech_theme.rs` - 技术主题
    - `mod.rs` - 主题系统核心
  - `server/` - 文档服务器
  - `lib.rs` - 库入口
- `tests/` - 测试代码
- `nargodoc.config.toml` - 配置文件

## 🔗 相关项目

- [nargo-types]https://github.com/nargo-js/nargo/tree/main/compilers/nargo-types: 基础类型定义
- [nargo-tools]https://github.com/nargo-js/nargo/tree/main/compilers/nargo-tools: 命令行工具集成
- [nargo-compiler]https://github.com/nargo-js/nargo/tree/main/compilers/nargo-compiler: 核心编译引擎
- [nargo-bundler]https://github.com/nargo-js/nargo/tree/main/compilers/nargo-bundler: 代码打包器

## 📚 文档

- **[官方文档]https://docs.nargo.dev/document** - 详细的使用文档
- **[API 参考]https://docs.nargo.dev/document/api** - 完整的 API 参考
- **[插件开发]https://docs.nargo.dev/document/plugins** - 插件开发指南
- **[主题开发]https://docs.nargo.dev/document/themes** - 主题开发指南

## 🤝 贡献

我们欢迎所有形式的贡献!请查看 [贡献指南](https://github.com/nargo-js/nargo/blob/main/CONTRIBUTING.md) 了解如何开始。

## ⚖️ License

MIT.

## 📞 联系我们

如有任何问题或建议,欢迎通过以下方式联系我们:

- **Email**: team@nargo.dev
- **GitHub**: [nargo-js/nargo]https://github.com/nargo-js/nargo