Lyo.Diff
3.0.0
dotnet add package Lyo.Diff --version 3.0.0
NuGet\Install-Package Lyo.Diff -Version 3.0.0
<PackageReference Include="Lyo.Diff" Version="3.0.0" />
<PackageVersion Include="Lyo.Diff" Version="3.0.0" />
<PackageReference Include="Lyo.Diff" />
paket add Lyo.Diff --version 3.0.0
#r "nuget: Lyo.Diff, 3.0.0"
#:package Lyo.Diff@3.0.0
#addin nuget:?package=Lyo.Diff&version=3.0.0
#tool nuget:?package=Lyo.Diff&version=3.0.0
Lyo.Diff
Compare human-readable text and object graphs side by side. Two subsystems sit behind IDiffService, and you can inject either one on its own.
Examples
Register in DI
using Lyo.Diff;
builder.Services.AddLyoDiff(); // ITextTokenizer, ITextDiffService, IObjectGraphDiffService, IDiffService
Diffing text (Lyo.Diff.Text)
ITextTokenizer(TextTokenizer). UsesTextDiffOptionsto split input intoTextToken[](TextTokenizeModechooses line, word, or character; ignore case; ignore whitespace;MaxTokensPerSidesafety cap). The cap throws when exceeded so pathological input cannot run away with memory.ITextDiffService(TextDiffService). Myers-diffs two parallel token streams and returns aTextDiffResultwhose orderedTextDiffChunksegments carry aTextDiffKind(equal, insert, delete).MyersDiffCalculator. The algorithm, applied to spans that are already tokenized.
Diffing object graphs (Lyo.Diff.ObjectGraph)
IObjectGraphDiffService(ObjectGraphDiffService). Walks two instances of the same nominal type (or compatible graphs), compares reachable properties and nested objects underObjectGraphDiffOptions, and yieldsObjectGraphDifferenceentries (path/context plus old/new leaf values).ObjectGraphLeafContext. Records where in the graph the change happened, for UI or logging.
Facade
IDiffService. SurfacesTextandObjectsso a single injection covers both.
Registration
Defaults register as singletons. Aside from options you pass per call, the services hold no state.
Notes on design
- EF and JSON are not dependencies. You pass a
stringor CLR objects you already hydrated. - Nothing is persisted automatically. Snapshot a "before" state yourself if you need one.
- Security. Diffing arbitrary user text can leak secrets in logs. Sanitize
TextDiffResultbefore you expose it — the same caution as storing raw payloads.
Related reading
Lyo.Diagnostic. Enrich stack and metadata when triage tooling consumes the diff output.
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Exceptions(direct, lyo)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5(direct, microsoft)System.Buffers4.6.1(direct, microsoft, netstandard2.0)
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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
- Lyo.Exceptions (>= 3.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- System.Buffers (>= 4.6.1)
-
net10.0
- Lyo.Exceptions (>= 3.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Lyo.Diff:
| Package | Downloads |
|---|---|
|
Lyo.Api
Core API library for building RESTful APIs with Entity Framework Core, caching, and mapping support. |
|
|
Lyo.Discord.Bot
DSharpPlus bot host that syncs Discord guild data to the Lyo API (DI, configuration, extensible base class). |
|
|
Lyo.Drift.Postgres
PostgreSQL persistence for the Lyo Drift collector. |
|
|
Lyo.Drift.Agent
Drift agent: watches configured directories and posts file-tree and system-info snapshots to the collector API. |
GitHub repositories
This package is not used by any popular GitHub repositories.