Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions src/AngleSharp.Diffing/Core/CompareResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,22 @@ public readonly record struct CompareResult(CompareDecision Decision, IDiff? Dif
public static readonly CompareResult SkipAttributes = new(CompareDecision.SkipAttributes);

/// <summary>
/// Use when the comparison should skip any attributes.
/// Use when the comparison should skip any attributes but has element differences.
/// </summary>
public static readonly CompareResult DifferentAndSkipAttributes = new(CompareDecision.Different | CompareDecision.SkipAttributes);

/// <summary>
/// Use when the comparison should skip any attributes and children but has element differences.
/// </summary>
public static readonly CompareResult DifferentAndSkipChildrenAndSkipAttributes = new(CompareDecision.Different | CompareDecision.SkipChildren | CompareDecision.SkipAttributes);

/// <summary>
/// Use when the comparison should skip children but has element differences.
/// </summary>
public static readonly CompareResult DifferentAndSkipChildren = new(CompareDecision.Different | CompareDecision.SkipChildren);

/// <summary>
/// Use when the comparison should skip any children and any attributes.
/// </summary>
public static readonly CompareResult SkipChildrenAndAttributes = new(CompareDecision.SkipChildren | CompareDecision.SkipAttributes);

Expand All @@ -50,7 +65,7 @@ public readonly record struct CompareResult(CompareDecision Decision, IDiff? Dif
public static CompareResult FromDiff(IDiff diff) => new(CompareDecision.Different, diff);

/// <summary>
/// Checks if a <see cref="CompareResult"/> is either a <see cref="CompareResult.Same"/> or <see cref="CompareResult.Skip"/>.
/// Checks if a <see cref="CompareResult"/> is either a <see cref="CompareDecision.Same"/> or <see cref="CompareDecision.Skip"/>.
/// </summary>
public bool IsSameOrSkip => this == Same || this == Skip;
public bool IsSameOrSkip => Decision.HasFlag(CompareDecision.Same) || Decision.HasFlag(CompareDecision.Skip);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ public static CompareResult Compare(in Comparison comparison, CompareResult curr
{
CompareDecision.None => CompareResult.SkipAttributes,
CompareDecision.Same => CompareResult.SkipAttributes,
CompareDecision.Different => CompareResult.SkipAttributes,
CompareDecision.Different => CompareResult.DifferentAndSkipAttributes,
CompareDecision.SkipChildren => CompareResult.SkipChildrenAndAttributes,
CompareDecision.DifferentAndSkipChildren => CompareResult.DifferentAndSkipChildrenAndSkipAttributes,
_ => currentDecision,
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public static class IgnoreChildrenElementComparer
/// </summary>
public static CompareResult Compare(in Comparison comparison, CompareResult currentDecision)
{
if (currentDecision == CompareResult.Skip || currentDecision == CompareResult.SkipChildren || currentDecision == CompareResult.SkipChildrenAndAttributes)
if (currentDecision.Decision.HasFlag(CompareDecision.SkipChildren) || currentDecision.Decision.HasFlag(CompareDecision.Skip))
return currentDecision;

if (!ControlHasTruthyIgnoreChildrenAttribute(comparison))
Expand All @@ -22,7 +22,8 @@ public static CompareResult Compare(in Comparison comparison, CompareResult curr
{
CompareDecision.None => CompareResult.SkipChildren,
CompareDecision.Same => CompareResult.SkipChildren,
CompareDecision.Different => CompareResult.SkipChildren,
CompareDecision.Different => CompareResult.DifferentAndSkipChildren,
CompareDecision.DifferentAndSkipAttributes => CompareResult.DifferentAndSkipChildrenAndSkipAttributes,
CompareDecision.SkipAttributes => CompareResult.SkipChildrenAndAttributes,
_ => currentDecision,
};
Expand Down
Loading