Skip to content

Commit 07cc2fa

Browse files
committed
Fixed bracket #67
1 parent 7c24091 commit 07cc2fa

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

src/AngleSharp.Css.Tests/Values/Calc.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ public void CalcAdditionWithBrackets()
3737
{
3838
var source = new StringSource(@"calc(5 + (3 + 7))");
3939
var calc = CalcParser.ParseCalc(source);
40-
Assert.AreEqual("calc(5 + 3 + 7)", calc.CssText);
40+
Assert.AreEqual("calc(5 + (3 + 7))", calc.CssText);
4141
}
4242

4343
[Test]
4444
public void CalcAdditionWithCalcBracket()
4545
{
4646
var source = new StringSource(@"calc(5 + calc(3 + 7))");
4747
var calc = CalcParser.ParseCalc(source);
48-
Assert.AreEqual("calc(5 + 3 + 7)", calc.CssText);
48+
Assert.AreEqual("calc(5 + (3 + 7))", calc.CssText);
4949
}
5050

5151
[Test]

src/AngleSharp.Css/Parser/Micro/CalcParser.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ private static ICssValue ParseBracketExpression(this StringSource source)
124124
if (source.Current == Symbols.RoundBracketOpen)
125125
{
126126
source.SkipCurrentAndSpaces();
127-
return source.ParseExpression();
127+
var content = source.ParseExpression();
128+
return new CssCalcBracketExpression(content);
128129
}
129130
else if (source.IsFunction(FunctionNames.Calc))
130131
{
131-
return source.ParseExpression();
132+
var content = source.ParseExpression();
133+
return new CssCalcBracketExpression(content);
132134
}
133135

134136
return source.ParseAtomicExpression();
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
namespace AngleSharp.Css.Values
2+
{
3+
using AngleSharp.Css.Dom;
4+
using System;
5+
6+
/// <summary>
7+
/// Represents a calc bracket expression, i.e., (2+3).
8+
/// </summary>
9+
sealed class CssCalcBracketExpression : ICssCompositeValue
10+
{
11+
private readonly ICssValue _content;
12+
13+
/// <summary>
14+
/// Creates a new calc bracket expression.
15+
/// </summary>
16+
/// <param name="content">The enclosed content.</param>
17+
public CssCalcBracketExpression(ICssValue content)
18+
{
19+
_content = content;
20+
}
21+
22+
/// <summary>
23+
/// Gets the bracket's content.
24+
/// </summary>
25+
public ICssValue Value => _content;
26+
27+
/// <summary>
28+
/// Gets the CSS text representation.
29+
/// </summary>
30+
public String CssText => String.Concat("(", _content.CssText, ")");
31+
}
32+
}

0 commit comments

Comments
 (0)