Skip to content

Commit ad05d12

Browse files
committed
inline ignore attribute done
1 parent 44dc153 commit ad05d12

12 files changed

+133
-162
lines changed

src/Comparers/DiffIgnoreAttributeCompareStrategy.cs

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/Strategies/IgnoreCommentsFilter.cs renamed to src/Strategies/IgnoreStrategies/IgnoreCommentsFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System.Text;
77
using System.Threading.Tasks;
88

9-
namespace Egil.AngleSharp.Diffing.Strategies
9+
namespace Egil.AngleSharp.Diffing.Strategies.IgnoreStrategies
1010
{
1111
public static class IgnoreCommentsFilter
1212
{

src/Strategies/IgnoreDiffAttributesFilter.cs renamed to src/Strategies/IgnoreStrategies/IgnoreDiffAttributesFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using System.Threading.Tasks;
66
using Egil.AngleSharp.Diffing.Core;
77

8-
namespace Egil.AngleSharp.Diffing.Strategies
8+
namespace Egil.AngleSharp.Diffing.Strategies.IgnoreStrategies
99
{
1010
public static class IgnoreDiffAttributesFilter
1111
{
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using AngleSharp.Dom;
7+
using Egil.AngleSharp.Diffing.Core;
8+
using Egil.AngleSharp.Diffing.Extensions;
9+
10+
namespace Egil.AngleSharp.Diffing.Strategies.IgnoreStrategies
11+
{
12+
public static class InlineIgnoreComparer
13+
{
14+
private const string DIFF_IGNORE_ATTRIBUTE = "diff:ignore";
15+
private const string DIFF_IGNORE_POSTFIX = ":ignore";
16+
17+
public static CompareResult Compare(in AttributeComparison comparison, CompareResult currentDecision)
18+
{
19+
if (currentDecision.IsDecisionFinal()) return currentDecision;
20+
21+
return comparison.Control.Attribute.Name.EndsWith(DIFF_IGNORE_POSTFIX, StringComparison.OrdinalIgnoreCase)
22+
? CompareResult.Same
23+
: currentDecision;
24+
}
25+
26+
public static CompareResult Compare(in Comparison comparison, CompareResult currentDecision)
27+
{
28+
if (currentDecision.IsDecisionFinal()) return currentDecision;
29+
30+
return ControlHasTruthyIgnoreAttribute(comparison)
31+
? CompareResult.SameAndBreak
32+
: currentDecision;
33+
}
34+
35+
private static bool ControlHasTruthyIgnoreAttribute(in Comparison comparison)
36+
{
37+
return comparison.Control.Node is IElement element &&
38+
element.TryGetAttrValue(DIFF_IGNORE_ATTRIBUTE, out bool shouldIgnore) &&
39+
shouldIgnore;
40+
}
41+
}
42+
}

tests/Comparers/DiffIgnoreAttributeCompareStrategyTest.cs

Lines changed: 0 additions & 64 deletions
This file was deleted.

tests/Core/DiffingTestBase.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,29 @@ protected ComparisonSource ToComparisonSource(string html, ComparisonSourceType
4242
return ToNode(html).ToComparisonSource(0, sourceType);
4343
}
4444

45+
protected Comparison ToComparison(string controlHtml, string testHtml)
46+
{
47+
return new Comparison(
48+
ToComparisonSource(controlHtml, ComparisonSourceType.Control),
49+
ToComparisonSource(testHtml, ComparisonSourceType.Test)
50+
);
51+
}
52+
53+
protected AttributeComparisonSource ToAttributeComparisonSource(string html, string attrName, ComparisonSourceType sourceType = ComparisonSourceType.Control)
54+
{
55+
var elementSource = ToComparisonSource(html, sourceType);
56+
var element = (IElement)elementSource.Node;
57+
return new AttributeComparisonSource(element.Attributes[attrName], elementSource);
58+
}
59+
60+
protected AttributeComparison ToAttributeComparison(string controlHtml, string controlAttrName, string testHtml, string testAttrName)
61+
{
62+
return new AttributeComparison(
63+
ToAttributeComparisonSource(controlHtml, controlAttrName, ComparisonSourceType.Control),
64+
ToAttributeComparisonSource(testHtml, testAttrName, ComparisonSourceType.Test)
65+
);
66+
}
67+
4568
protected static HtmlDifferenceEngine CreateHtmlDiffEngine(
4669
Func<DiffContext, SourceCollection, SourceCollection, IEnumerable<Comparison>>? nodeMatcher = null,
4770
Func<DiffContext, SourceMap, SourceMap, IEnumerable<AttributeComparison>>? attrMatcher = null,

tests/Filters/RemoveCommentsNodeFilterTest.cs

Lines changed: 0 additions & 23 deletions
This file was deleted.

tests/Filters/WhitespaceOnlyNodeFilterTest.cs

Lines changed: 0 additions & 39 deletions
This file was deleted.

tests/Strategies/IgnoreAttributeTest.cs

Lines changed: 0 additions & 15 deletions
This file was deleted.

tests/Strategies/IgnoreCommentsFilterTest.cs renamed to tests/Strategies/IgnoreStrategies/IgnoreCommentsFilterTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using System.Threading.Tasks;
88
using Xunit;
99

10-
namespace Egil.AngleSharp.Diffing.Strategies
10+
namespace Egil.AngleSharp.Diffing.Strategies.IgnoreStrategies
1111
{
1212
public class IgnoreCommentsFilterTest : DiffingTestBase
1313
{

0 commit comments

Comments
 (0)