Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

nochso/diff

Open more actions menu
 
 

Repository files navigation

nochso/diff

Namespace: \nochso\Diff

Diff implementation for PHP with support for text, HTML and console output out of the box.

This library is a fork of sebastian/diff: While the original diff implementation has not notably changed, new features were added:

  • Configurable limit for lines of context around the modified lines
  • Plain PHP templates for displaying diffs in:
    • Plain text
    • Colored POSIX console output
    • HTML
    • Github flavoured Markdown
  • Modify existing templates or create your own
  • Line numbering based on the "before" string
  • Upstream formatter for maintaining compatibility with sebastian/diff — and to keep the original tests around

Installation

composer require nochso/diff

Usage

Start with creating a Diff object by passing two strings to Diff::create():

$diff = \nochso\Diff\Diff::create('foo', 'bar');

The Diff object contains a list of DiffLine objects, consisting of text, a line number and the type of diff operation.

foreach ($diff->getDiffLines() as $line) {
    if ($line->isRemoval()) {
        echo 'Line ' . $line->getLineNumberFrom() . " was removed:\n";
        echo $line->getText() . "\n";
    }
}

Most of the time you'll want to display the diff somewhere. You can pass a Diff instance to anything that implements the Formatter interface:

$formatter = new \nochso\Diff\Format\Template\Text();
echo $formatter->format($diff);

Output:

1: -foo
 : +bar

How about two lines of context and Github flavoured 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
```

As you can see, when creating a Diff you can pass a ContextDiff object to change the default behaviour.

About

Diff implementation

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • PHP 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.