Skip to content

Commit 3922c60

Browse files
committed
fix: IgnoreComparer should check for CompareDcision.Difference
1 parent 93c89c3 commit 3922c60

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

src/AngleSharp.Diffing/Core/CompareResult.cs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,22 @@ public readonly record struct CompareResult(CompareDecision Decision, IDiff? Dif
3333
public static readonly CompareResult SkipAttributes = new(CompareDecision.SkipAttributes);
3434

3535
/// <summary>
36-
/// Use when the comparison should skip any attributes.
36+
/// Use when the comparison should skip any attributes but has element differences.
37+
/// </summary>
38+
public static readonly CompareResult DifferentAndSkipAttributes = new(CompareDecision.Different | CompareDecision.SkipAttributes);
39+
40+
/// <summary>
41+
/// Use when the comparison should skip any attributes and children but has element differences.
42+
/// </summary>
43+
public static readonly CompareResult DifferentAndSkipChildrenAndSkipAttributes = new(CompareDecision.Different | CompareDecision.SkipChildren | CompareDecision.SkipAttributes);
44+
45+
/// <summary>
46+
/// Use when the comparison should skip children but has element differences.
47+
/// </summary>
48+
public static readonly CompareResult DifferentAndSkipChildren = new(CompareDecision.Different | CompareDecision.SkipChildren);
49+
50+
/// <summary>
51+
/// Use when the comparison should skip any children and any attributes.
3752
/// </summary>
3853
public static readonly CompareResult SkipChildrenAndAttributes = new(CompareDecision.SkipChildren | CompareDecision.SkipAttributes);
3954

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

5267
/// <summary>
53-
/// Checks if a <see cref="CompareResult"/> is either a <see cref="CompareResult.Same"/> or <see cref="CompareResult.Skip"/>.
68+
/// Checks if a <see cref="CompareResult"/> is either a <see cref="CompareDecision.Same"/> or <see cref="CompareDecision.Skip"/>.
5469
/// </summary>
55-
public bool IsSameOrSkip => this == Same || this == Skip;
70+
public bool IsSameOrSkip => Decision.HasFlag(CompareDecision.Same) || Decision.HasFlag(CompareDecision.Skip);
5671
}

src/AngleSharp.Diffing/Strategies/ElementStrategies/IgnoreAttributesElementComparer.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ public static CompareResult Compare(in Comparison comparison, CompareResult curr
2222
{
2323
CompareDecision.None => CompareResult.SkipAttributes,
2424
CompareDecision.Same => CompareResult.SkipAttributes,
25-
CompareDecision.Different => CompareResult.SkipAttributes,
25+
CompareDecision.Different => CompareResult.DifferentAndSkipAttributes,
2626
CompareDecision.SkipChildren => CompareResult.SkipChildrenAndAttributes,
27+
CompareDecision.DifferentAndSkipChildren => CompareResult.DifferentAndSkipChildrenAndSkipAttributes,
2728
_ => currentDecision,
2829
};
2930
}

src/AngleSharp.Diffing/Strategies/ElementStrategies/IgnoreChildrenElementComparer.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static class IgnoreChildrenElementComparer
1212
/// </summary>
1313
public static CompareResult Compare(in Comparison comparison, CompareResult currentDecision)
1414
{
15-
if (currentDecision == CompareResult.Skip || currentDecision == CompareResult.SkipChildren || currentDecision == CompareResult.SkipChildrenAndAttributes)
15+
if (currentDecision.Decision.HasFlag(CompareDecision.SkipChildren) || currentDecision.Decision.HasFlag(CompareDecision.Skip))
1616
return currentDecision;
1717

1818
if (!ControlHasTruthyIgnoreChildrenAttribute(comparison))
@@ -22,7 +22,8 @@ public static CompareResult Compare(in Comparison comparison, CompareResult curr
2222
{
2323
CompareDecision.None => CompareResult.SkipChildren,
2424
CompareDecision.Same => CompareResult.SkipChildren,
25-
CompareDecision.Different => CompareResult.SkipChildren,
25+
CompareDecision.Different => CompareResult.DifferentAndSkipChildren,
26+
CompareDecision.DifferentAndSkipAttributes => CompareResult.DifferentAndSkipChildrenAndSkipAttributes,
2627
CompareDecision.SkipAttributes => CompareResult.SkipChildrenAndAttributes,
2728
_ => currentDecision,
2829
};

0 commit comments

Comments
 (0)