nochso / diff
差异实现
2.0.0
2016-05-31 18:04 UTC
Requires
- php: >=5.6.0
- nochso/omni: ^0.3.0
Requires (Dev)
- brianium/paratest: dev-master
- fabpot/php-cs-fixer: ^1.11
- phpunit/phpunit: ^5.2
- symfony/var-dumper: ^3.0
Suggests
- symfony/var-dumper: Required by nochso\Diff\Escape\Cli
This package is not auto-updated.
Last update: 2024-09-14 18:31:38 UTC
README
命名空间:
\nochso\Diff
PHP 的差异实现,支持文本、HTML 和控制台输出
此库是基于 sebastian/diff 的分支:虽然原始的差异实现没有显著变化,但增加了新功能
- 修改行周围的上下文行数的可配置限制
- 用于显示差异的纯 PHP 模板
- 纯文本
- 彩色 POSIX 控制台输出
- HTML
- Github 风格的 Markdown
- 修改现有模板或创建自己的模板
- 基于 "before" 字符串的行编号
Upstream
格式化器,以保持与sebastian/diff
的兼容性——并保留原始测试
安装
composer require nochso/diff
用法
通过传递两个字符串给 Diff::create()
创建一个 Diff
对象开始
$diff = \nochso\Diff\Diff::create('foo', 'bar');
Diff 对象包含一个 DiffLine
对象列表,包含文本、行号和差异操作类型。
foreach ($diff->getDiffLines() as $line) { if ($line->isRemoval()) { echo 'Line ' . $line->getLineNumberFrom() . " was removed:\n"; echo $line->getText() . "\n"; } }
大多数时候你都会想在某个地方显示差异。你可以将 Diff 实例传递给实现了 Formatter
接口的任何对象
$formatter = new \nochso\Diff\Format\Template\Text(); echo $formatter->format($diff);
输出
1: -foo
: +bar
如何实现两行上下文和 Github 风格的 Markdown 呢?
$context = new ContextDiff(); $context->setMaxContext(2); $diff = Diff::create($from, $to, $context); $gfm = new \nochso\Diff\Format\Template\GithubMarkdown(); echo $gfm->format($diff);
```diff
2: pariatur ground round
3: dolore meatloaf nisi
-4: shoulder.
5: Consequat rump spare
-6: ribs ham hock shank.
7: Magna esse nisi
8: frankfurter picanha
```
如你所见,在创建 Diff 时,你可以传递一个 ContextDiff 对象来更改默认行为。