在 markdown 文档中显示代码之间的差异的 Gitbook 插件

English | 中文

主页

屏幕截图

  • 用法
{% diff method="diffJson" %}

```json
{
"name": "gitbook-plugin-simple-mind-map",
"version": "0.2.1",
"description": "A gitBook plugin for generating and exporting mind map within markdown"
}
``` ```json
{
"name": "gitbook-plugin-diff",
"version": "0.2.1",
"description": "A gitbook plugin for showing the differences between the codes within markdown"
}
``` {% enddiff %}
  • 预览
{
- "description": "A gitBook plugin for generating and exporting mind map within markdown",
- "name": "gitbook-plugin-simple-mind-map",
+ "description": "A gitbook plugin for showing the differences between the codes within markdown",
+ "name": "gitbook-plugin-diff",
"version": "0.2.1"
}

用法

步骤#1-更新 book.json 文件

在您的 gitbookbook.json 文件中,将 diff 添加到 plugins 列表中.

这是最简单的示例:

{
"plugins": ["diff"]
}

此外,受支持的配置选项如下:

"gitbook": {
"properties": {
"method": {
"type": "string",
"title": "jsdiff api method",
"required": false,
"default": "diffLines",
"description": "some supported methods such as diffChars or diffWords or diffWordsWithSpace or diffLines or diffTrimmedLines or diffSentences or diffCss or diffJson or diffArrays"
},
"options": {
"type": "object",
"title": "jsdiff api options",
"required": false,
"description": "some methods may not support options"
}
}
}

步骤#2- 使用 markdown 语法

diff 插件支持 methodoptions 等选项生成差异代码块.

这是在 markdown 文件中基本使用语法:

{% diff %}
```
old code
```
```
new code
```
{% enddiff %}

下面有一些基本示例:

Diff.diffChars(oldStr, newStr[, options])

区分两个文本块,逐个字符比较。

返回

返回更改对象列表(请参见下文)。

选项

  • ignoreCasetrue忽略大小写差异。默认为false

示例

  • 用法

设置method="diffChars"以调用Diff.diffChars(oldStr, newStr[, options])方法

{% diff method="diffChars" %}

```js
cat
``` ```js
cap
``` {% enddiff %}
  • 预览
  ca
- t
+ p

Diff.diffWords(oldStr, newStr[, options])

区分两个文本块,逐字比较,忽略空格。

返回

返回更改对象列表(请参见下文)。

选项

  • ignoreCase :与diffChars相同。

示例

  • 用法

设置method="diffWords"来调用Diff.diffWords(oldStr, newStr[, options])方法

{% diff method="diffWords" %}

```bash
beep boop
``` ```bash
beep boob blah
``` {% enddiff %}
  • 预览
  beep
- boop
+ boob + blah

Diff.diffWordsWithSpace(oldStr, newStr[, options])

区分两个文本块,逐字比较,将空白视为有效。

返回

返回更改对象列表(请参见下文)。

选项

  • ignoreCase :与diffWords相同。

示例

  • 用法

设置method="diffWordsWithSpace"以调用Diff.diffWordsWithSpace(oldStr, newStr[, options])方法

{% diff method="diffWordsWithSpace" %}

```bash
beep boop
``` ```bash
beep boob blah
``` {% enddiff %}
  • 预览
  beep
- boop
+ boob blah

Diff.diffLines(oldStr, newStr[, options])

比较两个文本块,逐行比较。

返回

返回更改对象列表(请参见下文)。

选项

  • ignoreWhitespacetrue忽略前导和尾随空白。这与diffTrimmedLines相同
  • newlineIsTokentrue newlineIsToken换行符视为单独的标记。这允许换行结构的更改独立于行内容而发生,并照此处理。通常,这是diffLines更加人性化的形式,并且diffLines更适合于补丁和其他计算机友好的输出。

示例

  • 用法

设置method="diffLines"以调用Diff.diffLines(oldStr, newStr[, options])方法

{% diff method="diffLines",options={"newlineIsToken":true} %}

```bash
beep boop
the cat is palying with cap
what
``` ```bash
beep boob blah
the cat is palying with cap
who
``` {% enddiff %}
  • 预览
- beep boop

+ beep boob blah

  the cat is palying with cap

- what

+ who

Diff.diffTrimmedLines(oldStr, newStr[, options])

区分两个文本块,逐行比较,忽略前导和尾随空格。

返回

返回更改对象列表(请参见下文)。

选项

  • ignoreWhitespace :与diffLines相同。
  • newlineIsToken :同diffLines

示例

  • 用法

设置method="diffTrimmedLines"来调用Diff.diffTrimmedLines(oldStr, newStr[, options])方法

{% diff method="diffTrimmedLines",options={"newlineIsToken":true} %}

```bash
beep boop
the cat is palying with cap
what
``` ```bash
beep boob blah
the cat is palying with cat
who
``` {% enddiff %}
  • 预览
- beep boop
the cat is palying with cap
what + beep boob blah
the cat is palying with cat
who

Diff.diffSentences(oldStr, newStr[, options])

区分两个文本块,逐句比较。

返回

返回更改对象列表(请参见下文)。

示例

  • 用法

设置method="diffSentences"来调用Diff.diffSentences(oldStr, newStr[, options])方法

{% diff method="diffSentences" %}

```bash
beep boop
the cat is palying with cap
what
``` ```bash
beep boob blah
the cat is palying with cat
who
``` {% enddiff %}
  • 预览
- beep boop
the cat is palying with cap
what + beep boob blah
the cat is palying with cat
who

Diff.diffCss(oldStr, newStr[, options])

比较两个文本块,比较 CSS 标记。

返回

返回更改对象列表(请参见下文)。

示例

  • 用法

设置method="diffCss"来调用Diff.diffCss(oldStr, newStr[, options])方法

{% diff method="diffCss" %}

```css
.markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section h5, .markdown-section h6 {
margin-top: 1.275em;
margin-bottom: .85em;
font-weight: 700;
}
``` ```css
.markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section h5, .markdown-section h6 {
margin-top: 1.5em;
margin-bottom: 1em;
}
``` {% enddiff %}
  • 预览
  .markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section h5, .markdown-section h6 {
margin-top:
- 1.275em
+ 1.5em
;
margin-bottom:
- .85em
+ 1em
;
-
font-weight: 700; }

Diff.diffJson(oldObj, newObj[, options])

比较两个 JSON 对象,比较每个对象上定义的字段。在此比较中,字段的顺序等并不重要。

返回

返回更改对象列表(请参见下文)。

示例

  • 用法

设置method="diffJson"来调用Diff.diffJson(oldObj, newObj[, options])方法

{% diff method="diffJson" %}

```json
{
"name": "gitbook-plugin-simple-mind-map",
"version": "0.2.1",
"description": "A gitBook plugin for generating and exporting mind map within markdown"
}
``` ```json
{
"name": "gitbook-plugin-diff",
"version": "0.2.1",
"description": "A gitbook plugin for showing the differences between the codes within markdown"
}
``` {% enddiff %}
  • 预览
{
- "description": "A gitBook plugin for generating and exporting mind map within markdown",
- "name": "gitbook-plugin-simple-mind-map",
+ "description": "A gitbook plugin for showing the differences between the codes within markdown",
+ "name": "gitbook-plugin-diff",
"version": "0.2.1"
}

Diff.diffArrays(oldArr, newArr[, options])

比较两个数组,比较每个项目是否严格相等(===)。

返回

返回更改对象列表(请参见下文)。

选件

  • comparator :用于自定义相等性检查的function(left, right)

示例

  • 用法

设置method="diffArrays"以调用Diff.diffArrays(oldArr, newArr[, options])方法

{% diff method="diffArrays" %}

```json
[
"Vue",
"Python",
"Java",
"flutter",
"springboot",
"docker",
"React",
"小程序"
]
``` ```json
[
"Vuejs",
"Nodejs",
"Java",
"flutter",
"springboot",
"docker",
"React"
]
``` {% enddiff %}
  • 预览
[
- Vue
- Python
+ Vuejs
+ Nodejs
Java
flutter
springboot
docker
React
- 小程序
]

步骤#3- 运行 gitbook 命令

  1. 运行 gitbook install .它将自动为您的 gitbook 安装 diff 插件.

该步骤仅需要允许一次即可.

gitbook install

或者您可以运行 npm install gitbook-plugin-diff 命令本地安装 gitbook-plugin-diff 插件.

npm install gitbook-plugin-diff
  1. 像往常一样构建您的书( gitbook build )或服务( gitbook serve ).
gitbook serve

示例

  • 官方文档配置文件

https://github.com/snowdreams1006/gitbook-plugin-diff/blob/master/docs/book.json

{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffJson"
}
}
}
  • 官方示例配置文件

https://github.com/snowdreams1006/gitbook-plugin-diff/blob/master/example/book.json

{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffJson"
}
}
}
  • 示例book.json文件
{
"plugins": ["diff"]
}

或者您可以将 method 设置为默认方法用于代码之间进行比较方式:

{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffChars"
}
}
}

或者您可以根据方法将 options 设置为默认选项.

{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffChars",
"options": {
"ignoreCase": true
}
}
}
}

注意 :如果您的书还没有创建,以上代码段可以用作完整的 book.json 文件.

致谢

作者

snowdreams1006

贡献

欢迎贡献,问题和功能要求!随时检查问题页面

支持

如果这个项目对您有帮助,请给个星星

版权

版权所有 2019 snowdreams1006

该项目是MIT许可的。

如果本文对你有所帮助,请动动小手点一下推荐,否则还请留言指正,如有需要,请关注个人公众号「 雪之梦技术驿站

gitbook 入门教程之比较代码块差异 diff 插件的更多相关文章

  1. gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程

    什么是插件 Gitbook 插件是扩展 GitBook 功能(电子书和网站)的最佳方式. 只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大 ...

  2. gitbook 入门教程之从零到壹发布自己的插件

    什么是插件 Gitbook 插件是扩展 Gitbook 功能的最佳方式,如果 Gitbook 没有想要的功能或者说网络上也没有现成的解决方案时,那么只剩下自食其力这条道路,让我们一起来自力更生开发插件 ...

  3. gitbook 入门教程之前置知识

    markdown 基本知识 markdown 是一种简化的 html 语法,相比于 txt 无格式文本更强大. 你可以用专门的软件去编辑 markdown 文件,就像需要使用软件编辑 txt 文件一样 ...

  4. gitbook 入门教程之常用命令详解

    不论是 gitbook-cli 命令行还是 gitbook editor 编辑器都离不开 gitbook 命令的操作使用,所以再次了解下常用命令. 注意 gitbook-cli 是 gitbook 的 ...

  5. gitbook 入门教程之使用 gitbook.com 在线开发电子书

    gitbook 官网是官方提供的图书托管的在线平台,分为新版官网(需要FQ) https://www.gitbook.com/ 和旧版官网(无需FQ) https://legacy.gitbook.c ...

  6. gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!

    相信大多数博客作者都或多或少有过这样想法: 现在各种平台这么多,想要实现全平台发布就要到处复制粘贴,等我有空一定做统一平台一次性全部解决! 不知道正在阅读文章的你,有没有这样的想法? 反正我确实这么想 ...

  7. gitbook 入门教程之使用 gitbook-cli 开发电子书

    gitbook 生成电子书主要有三种方式: gitbook-cli 命令行操作,简洁高效,适合从事软件开发的相关人员. gitbook-editor 编辑器操作,可视化编辑,适合无编程经验的文学创作者 ...

  8. gitbook 入门教程之快速体验

    本文主要介绍三种使用 gitbook 的方式,分别是 gitbook 命令行工具,Gitbook Editor 官方编辑器和 gitbook.com 官网. 总体来说,三种途径适合各自不同的人群,找到 ...

  9. gitbook 入门教程之环境要求

    gitbook 是基于 node.js 的命令行工具,首先需要安装并配置好 node.js 环境,然后才能安装gitbook 相关工具. 由于安装工具全部都是国外网站,因此速度可能会很慢,也可能需要F ...

  10. gitbook 入门教程之发布电子书

    输出目标文件 语法格式: gitbook build [book] [output] 默认情况下,gitbook 输出方式是静态网站,其实 gitbook 的输出方式有三种: website, jso ...

随机推荐

  1. NOIP模拟49

    虚伪的眼泪,会伤害别人,虚伪的笑容,会伤害自己. 前言 暑假集训过后的第一次考试,成绩一般,没啥好说的 T1 Reverse 解题思路 看到这个题的第一眼就感觉是最短路,毕竟题目的样子就好像之前做过的 ...

  2. INTEL S4500 960G 入手评测

    INTEL S4500 960G 入手评测 简易上个图: CDI AS SSD: CDM: AS SSD AND CDM: -

  3. WIN10 家庭版 罗技G hub 安装提示不兼容当前操作系统解决方法

    WIN10 家庭版 罗技G hub 安装提示不兼容当前操作系统解决方法 解决方法: 下载Onboard Memory Manager就可以. --

  4. work09

    day10作业: 第一题: 定义一个接口Animal,包含: 1.抽象方法: run() 2.默认方法: breathe(),输出"动物会呼吸",同时调用静态方法 eat(),私有 ...

  5. npm 发布自己的组件库

    npm 发布组件库步骤 第一步:注册 npm 账号 第二步:编写自己的组件库 第三部:编写 package.json 可以通过命令生成 npm init { "name": &qu ...

  6. Java对象转Map<String,String>

    Java对象转Map<String,String> import org.springframework.beans.BeanUtils; import org.springframewo ...

  7. Json字符串转换处理html编码格式,= \u003d 处理

    Json字符串转换处理html编码格式,=  \u003d 处理 import com.alibaba.fastjson.annotation.JSONField; import com.faster ...

  8. Oh-My-Zsh 提示符只显示当前路径,不需要修改主题文件

    我真是服了.就这么一个简单的小问题我在网上找了一个多小时,一大堆 CSDN 文章都是抄 同一篇博客 的教程,所有的博客都要我去把 ~/.oh-my-zsh/themes/*.zsh-theme 文件里 ...

  9. Zabbix---数据库表分区

    1) 查询zabbix数据库中各种表存储的大小和行数: mysql> select table_name, (data_length + index_length)/1024/1024 as t ...

  10. HTTP长连接、短连接、Linux网络优化

    无连接 含义:每次传输完数据后就断开连接. 因为早期互联网规模小,并且http具有瞬时性,突发性,服务器同时处理着多个请求.所以采用无连接的方式.以便于腾出资源处理其他请求. 无状态 顺便说一说无状态 ...