在 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. vivo 制品管理在 CICD 落地实践

    作者:vivo 互联网效能平台团队 - Chen Lingling 在DevOps实践中,制品管理是一个重要的组成部分,它可以帮助团队快速交付高质量.高可靠性的软件,本文将介绍在 DevOps 领域, ...

  2. openstack neutron 报错

    openstack neutron /etc/neutron下面没有dhcp文件 查错发现安装时候打错

  3. Python实现求多个集合之间的并集-方法2

    之前使用过一种方法实现求集合间的并集,参考文章:https://www.cnblogs.com/mrlayfolk/p/12373532.html,这次使用另外一种方法实现,这种方法效率更高. 目的: ...

  4. python获取豆瓣电影TOP250的所有电影的相关信息

    参考文档:https://weread.qq.com/web/reader/37132a705e2b2f37196c138k98f3284021498f137082c2e 说明:我才接触网络爬虫,在看 ...

  5. [DP] DP优化总结

    写在前面 $ DP $,是每个信息学竞赛选手所必会的算法,而 $ DP $ 中状态的转移又显得尤为关键.本文主要从状态的设计和转移入手,利用各种方法对朴素 $ DP $ 的时间复杂度和空间复杂度进行优 ...

  6. 2. Elasticsearch 使用插件和kibana操作

    引言 在上一篇文章中1. Elasticsearch 入门安装与部署 已经教了大家如何在linux系统中安装和启动Elasticsearch,本文就带大家一起学习如何操作 Elasticsearch. ...

  7. 安装并使用 openssl 生成证书

    1. 安装 openssl参考链接: OpenSSL加密算法库使用系列教程_openssl算法哭调用-CSDN博客 安装包下载地址: 安装包下载地址(正常情况需要将 openssl 源码下载后, 自己 ...

  8. MySQL条件判断IF,CASE,IFNULL语句详解

    MySQL条件判断IF,CASE,IFNULL语句详解 1.IF语句的基本用法IF(condition, true_statement, false_statement);condition: 条件表 ...

  9. 微服务引入swagger生成接口的json导入到yapi配置方法 数据管理 开启url导入

    微服务引入swagger生成接口的json导入到yapi配置方法 数据管理 开启url导入 yapi安装参考window10 yapi安装 swagger配置 及 Error: getaddrinfo ...

  10. 一些常见功能的查询sql

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 一些常见功能的查询sql 日期:2019-4-10 阿珏 ...