Skip to content

Commit f85b2f6

Browse files
committed
Also use it for pages
1 parent 8b8482a commit f85b2f6

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/AngleSharp.Css/Dom/Internal/Rules/CssPageRule.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ public String SelectorText
4545

4646
#region Methods
4747

48+
internal void SetInvalidSelector(String selectorText)
49+
{
50+
_selector = new InvalidSelector(selectorText);
51+
}
52+
4853
protected override void ReplaceWith(ICssRule rule)
4954
{
5055
var newRule = (ICssPageRule)rule;
@@ -59,5 +64,29 @@ public override void ToCss(TextWriter writer, IStyleFormatter formatter)
5964
}
6065

6166
#endregion
67+
68+
#region Selector
69+
70+
class InvalidSelector : ISelector
71+
{
72+
private readonly String _text;
73+
74+
public InvalidSelector(String text)
75+
{
76+
_text = text;
77+
}
78+
79+
public String Text => _text;
80+
81+
public Priority Specificity => Priority.Zero;
82+
83+
public void Accept(ISelectorVisitor visitor)
84+
{
85+
}
86+
87+
public Boolean Match(IElement element, IElement scope) => false;
88+
}
89+
90+
#endregion
6291
}
6392
}

src/AngleSharp.Css/Parser/CssBuilder.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,15 @@ private CssNamespaceRule CreateNamespace(CssNamespaceRule rule, CssToken current
271271
private CssPageRule CreatePage(CssPageRule rule, CssToken current)
272272
{
273273
current = NextToken();
274-
rule.SelectorText = GetArgument(ref current);
274+
var selectorText = GetArgument(ref current);
275+
276+
rule.SelectorText = selectorText;
277+
278+
if (rule.Selector is null && _options.IsToleratingInvalidSelectors)
279+
{
280+
rule.SetInvalidSelector(selectorText);
281+
}
282+
275283
CollectTrivia(ref current);
276284

277285
if (current.Type != CssTokenType.CurlyBracketOpen)

0 commit comments

Comments
 (0)