diff --git a/src/AngleSharp.Css.Tests/Library/StringRepresentation.cs b/src/AngleSharp.Css.Tests/Library/StringRepresentation.cs index 1b4edb1b..8aae59f3 100644 --- a/src/AngleSharp.Css.Tests/Library/StringRepresentation.cs +++ b/src/AngleSharp.Css.Tests/Library/StringRepresentation.cs @@ -83,5 +83,27 @@ public void ConicGradientNotParsedCorrectly_Issue101() var css = styleSheet.ToCss(); Assert.AreEqual("div { background: conic-gradient(rgba(255, 0, 0, 1), rgba(255, 255, 0, 1), rgba(0, 128, 0, 1)) }", css); } + + [Test] + public void EscapePropertyNames_CustomProperty_Issue120() + { + var css = @".class { --\/\%\$\!: value }"; + var styleSheet = ParseStyleSheet(css); + + var generatedCss = styleSheet.ToCss(); + + Assert.AreEqual(css, generatedCss); + } + + [Test] + public void EscapePropertyNames_UnknownDeclaration_Issue120() + { + var css = @".class { \/\%\$\!: value }"; + var styleSheet = ParseStyleSheet(css, new CssParserOptions{ IsIncludingUnknownDeclarations = true }); + + var generatedCss = styleSheet.ToCss(); + + Assert.AreEqual(css, generatedCss); + } } } diff --git a/src/AngleSharp.Css/Dom/Internal/CssProperty.cs b/src/AngleSharp.Css/Dom/Internal/CssProperty.cs index 46129396..f4fa91e1 100644 --- a/src/AngleSharp.Css/Dom/Internal/CssProperty.cs +++ b/src/AngleSharp.Css/Dom/Internal/CssProperty.cs @@ -86,7 +86,7 @@ public Boolean IsImportant #region String Representation - public void ToCss(TextWriter writer, IStyleFormatter formatter) => writer.Write(formatter.Declaration(Name, Value, IsImportant)); + public void ToCss(TextWriter writer, IStyleFormatter formatter) => writer.Write(formatter.Declaration(CssUtilities.Escape(Name), Value, IsImportant)); #endregion }