sebastian.diff
3.0.2
dotnet add package sebastian.diff --version 3.0.2
NuGet\Install-Package sebastian.diff -Version 3.0.2
<PackageReference Include="sebastian.diff" Version="3.0.2" />
paket add sebastian.diff --version 3.0.2
#r "nuget: sebastian.diff, 3.0.2"
// Install sebastian.diff as a Cake Addin #addin nuget:?package=sebastian.diff&version=3.0.2 // Install sebastian.diff as a Cake Tool #tool nuget:?package=sebastian.diff&version=3.0.2
Diff implementation for PHP, factored out of PHPUnit into a stand-alone component.
Generating diff
The Differ
class can be used to generate a textual representation of the difference between two strings:
using SebastianBergmann.Diff;
var differ = new Differ();
Console.WriteLine( differ.diff("foo", "bar") );
The code above yields the output below:
--- Original
+++ New
@@ @@
-foo
+bar
There are three output builders available in this package:
UnifiedDiffOutputBuilder
This is default builder, which generates the output close to udiff
and is used by PHPUnit.
using SebastianBergmann.Diff;
using SebastianBergmann.Diff.Output;
var builder = new UnifiedDiffOutputBuilder(
"--- Original
+++ New
", // custom header
false // do not add line numbers to the diff
);
var differ = new Differ(builder);
Console.WriteLine( $differ.diff("foo", "bar") );
StrictUnifiedDiffOutputBuilder
Generates (strict) Unified diff's (unidiffs) with hunks,
similar to diff -u
and compatible with patch
and git apply
.
using SebastianBergmann.Diff;
using SebastianBergmann.Diff.Output;
var builder = new StrictUnifiedDiffOutputBuilder(new PhpArray() {
{ "collapseRanges", true }, // ranges of length one are rendered with the trailing `,1`
{ "commonLineThreshold", 6}, // number of same lines before ending a new hunk and creating a new one (if needed)
{ "contextLines", 3 }, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3
{ "fromFile", PhpValue.Null },
{ "fromFileDate", PhpValue.Null },
{ "toFile", PhpValue.Null },
{ "toFileDate", PhpValue.Null },
});
var differ = new Differ(builder);
Console.WriteLine( differ.diff("foo", "bar") );
DiffOnlyOutputBuilder
Output only the lines that differ.
using SebastianBergmann.Diff;
using SebastianBergmann.Diff.Output;
var builder = new DiffOnlyOutputBuilder(
"--- Original
+++ New
"
);
var differ = new Differ(builder);
Console.WriteLine( differ.diff("foo", "bar") );
DiffOutputBuilderInterface
You can pass any output builder to the Differ
class as longs as it implements the DiffOutputBuilderInterface
.
Parsing diff
The Parser
class can be used to parse a unified diff into an object graph:
using SebastianBergmann.Diff;
// using SebastianBergmann;
// var git = new Git('/usr/local/src/money');
//var diff = git.getDiff(
// "948a1a07768d8edd10dcefa8315c1cbeffb31833",
// "c07a373d2399f3e686234c4f7f088d635eb9641b"
//);
var parser = new Parser();
var diff = parser.parse(diff);
The code above returns ICollection
of SebastianBergmann.Diff.Diff
objects.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Peachpie.Library (>= 0.9.800)
- Peachpie.Runtime (>= 0.9.800)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.0.2 | 494 | 1/19/2020 |