Timeless refactor
This commit is contained in:
41
src/Core/FileTime.Core.Abstraction/Timeline/PointInTime.cs
Normal file
41
src/Core/FileTime.Core.Abstraction/Timeline/PointInTime.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
namespace FileTime.Core.Timeline;
|
||||
|
||||
public class PointInTime
|
||||
{
|
||||
private readonly List<Difference> _differences;
|
||||
public static readonly PointInTime Eternal = new PointInTime();
|
||||
public static readonly PointInTime Present = new PointInTime();
|
||||
|
||||
public IReadOnlyList<Difference> Differences { get; }
|
||||
|
||||
private PointInTime() : this(new List<Difference>())
|
||||
{
|
||||
}
|
||||
|
||||
private PointInTime(IEnumerable<Difference> differences)
|
||||
{
|
||||
_differences = new List<Difference>(differences);
|
||||
Differences = _differences.AsReadOnly();
|
||||
}
|
||||
|
||||
private PointInTime(PointInTime previous, IEnumerable<Difference> differences)
|
||||
: this(MergeDifferences(previous.Differences, differences))
|
||||
{
|
||||
}
|
||||
|
||||
public PointInTime WithDifferences(IEnumerable<Difference> differences) =>
|
||||
new(this, differences);
|
||||
|
||||
private static List<Difference> MergeDifferences(IEnumerable<Difference> previouses,
|
||||
IEnumerable<Difference> differences)
|
||||
{
|
||||
var merged = new List<Difference>();
|
||||
|
||||
merged.AddRange(previouses);
|
||||
merged.AddRange(differences);
|
||||
|
||||
return merged;
|
||||
}
|
||||
|
||||
public static PointInTime CreateEmpty() => new PointInTime();
|
||||
}
|
||||
Reference in New Issue
Block a user