# zhlint

Note: This project is highly related to Chinese, so the document is writtern in Chinese.

## 简介

一个处理文档风格的工具：

* 支持文档风格的检查（使用 `check` 命令）。
* 支持文档风格的自动修复（使用 `fix` 命令）。

注意：

* 目前仅支持 Markdown 格式文档的检测与修复。

## 支持的检查项目

| 错误码  | 检查范围 | 描述                                       |
| ---- | ---- | ---------------------------------------- |
| E101 | 段落   | 英文与非标点的中文之间需要有一个空格                       |
| E102 | 段落   | 数字与非标点的中文之间需要有一个空格                       |
| E103 | 段落   | 除了「％」、「℃」、以及倍数单位（如 2x、3n）之外，其余数字与单位之间需要加空格 |
| E104 | 段落   | 书写时括号中全为数字，则括号用半角括号且首括号前要空一格             |
| E201 | 句子   | 只有中文或中英文混排中，一律使用中文全角标点                   |
| E202 | 句子   | 如果出现整句英文，则在这句英文中使用英文、半角标点                |
| E203 | 段落   | 中文标点与其他字符间一律不加空格                         |
| E204 | 句子   | 中文文案中使用中文引号「」和『』，其中「」为外层引号               |
| E205 | 段落   | 省略号请使用「……」标准用法                           |
| E206 | 段落   | 感叹号请使用「！」标准用法                            |
| E207 | 段落   | 请勿在文章内使用「~」                              |
| E301 | 段落   | 常用名词错误                                   |

详情见 [写作规范和格式规范，DaoCloud 文档](http://docs-static.daocloud.io/write-docs/format)。

## 安装

```
pip install zhlint
```

安装成功后，可执行 `zhlint` 命令行程序处理文档。

## 命令行程序 `zhlint` 的使用方法

### `zhlint check SRC`，检查文档风格

`check` 命令会检查路径为 `SRC` 的文件，打印检测到的文档风格错误。示例如下：

```shell
$ ccat doc.md 
只有中文或中英文混排中,一律使用中文全角标点. 英文 **english**与非标点的中文之间需要有一个空格。

支持简单的错误名词检测，如 APP、ios 这类的。
$ zhlint check doc.md 
==========================================
E101: 英文与非标点的中文之间需要有一个空格
==========================================
LINE: 1
角标点. 英文 english与非标点的中文之间需
　　　  　　       -－
........................................

==================================================
E201: 只有中文或中英文混排中，一律使用中文全角标点
==================================================
LINE: 1
中文或中英文混排中,一律使用中文全角标
　　　　　　　　　-
.....................................
LINE: 1
律使用中文全角标点.
　　　　　　　　　-
...................

==================
E301: 常用名词错误
==================
LINE: 3
的错误名词检测，如 APP、ios 这类的。
　　　　　　　　　 ---
....................................
LINE: 3
名词检测，如 APP、ios 这类的。
　　　　　　    　---
..............................

```

### `zhlint fix SRC [DST]`，修复文档风格

`fix` 命令会尝试修复路径为 `SRC` 的文件中出现的风格错误：

* 如果省略 `DST`，修复后的文本将打印到标准输出。
* 如果传入 `DST`，修复后的文本将写入到 `DST`。


示例如下：

```shell
$ zhlint fix doc.md 
只有中文或中英文混排中，一律使用中文全角标点。 英文 **english** 与非标点的中文之间需要有一个空格。

支持简单的错误名词检测，如 App、iOS 这类的。
$ zhlint fix doc.md fixed-doc.md
$ colordiff doc.md fixed-doc.md 
1c1
< 只有中文或中英文混排中,一律使用中文全角标点. 英文 **english**与非标点的中文之间需要有一个空格。
---
> 只有中文或中英文混排中，一律使用中文全角标点。 英文 **english** 与非标点的中文之间需要有一个空格。
3c3
< 支持简单的错误名词检测，如 APP、ios 这类的。
---
> 支持简单的错误名词检测，如 App、iOS 这类的。
```
