diff --git a/src/AngleSharp.Css.Tests/Styling/BasicStyling.cs b/src/AngleSharp.Css.Tests/Styling/BasicStyling.cs
index 9af111fd..fad2e42e 100644
--- a/src/AngleSharp.Css.Tests/Styling/BasicStyling.cs
+++ b/src/AngleSharp.Css.Tests/Styling/BasicStyling.cs
@@ -163,6 +163,14 @@ public void MinifyRemovesComment()
Assert.AreEqual("h1{color:rgba(255, 0, 0, 1)}", result);
}
+ [Test]
+ public void MinifyMinimizesProperties()
+ {
+ var sheet = ParseStyleSheet("a { grid-area: aa / aa / aa / aa }");
+ var result = sheet.ToCss(new MinifyStyleFormatter() { MinimizePropertiesValue = true });
+ Assert.AreEqual("a{grid-area:aa}", result);
+ }
+
[Test]
public void MinifyRemovesEmptyStyleRule()
{
diff --git a/src/AngleSharp.Css/Constants/PropertyNames.cs b/src/AngleSharp.Css/Constants/PropertyNames.cs
index 2e79de51..e4e94108 100644
--- a/src/AngleSharp.Css/Constants/PropertyNames.cs
+++ b/src/AngleSharp.Css/Constants/PropertyNames.cs
@@ -10,1341 +10,1341 @@ public static class PropertyNames
///
/// The align-content declaration.
///
- public static readonly String AlignContent = "align-content";
+ public const String AlignContent = "align-content";
///
/// The align-items declaration.
///
- public static readonly String AlignItems = "align-items";
+ public const String AlignItems = "align-items";
///
/// The align-baseline declaration.
///
- public static readonly String AlignBaseline = "alignment-baseline";
+ public const String AlignBaseline = "alignment-baseline";
///
/// The align-self declaration.
///
- public static readonly String AlignSelf = "align-self";
+ public const String AlignSelf = "align-self";
///
/// The accelerator declaration.
///
- public static readonly String Accelerator = "accelerator";
+ public const String Accelerator = "accelerator";
///
/// The animation declaration.
///
- public static readonly String Animation = "animation";
+ public const String Animation = "animation";
///
/// The animation-delay declaration.
///
- public static readonly String AnimationDelay = "animation-delay";
+ public const String AnimationDelay = "animation-delay";
///
/// The animation-direction declaration.
///
- public static readonly String AnimationDirection = "animation-direction";
+ public const String AnimationDirection = "animation-direction";
///
/// The animation-duration declaration.
///
- public static readonly String AnimationDuration = "animation-duration";
+ public const String AnimationDuration = "animation-duration";
///
/// The animation-fill-mode declaration.
///
- public static readonly String AnimationFillMode = "animation-fill-mode";
+ public const String AnimationFillMode = "animation-fill-mode";
///
/// The animation-iteration-count declaration.
///
- public static readonly String AnimationIterationCount = "animation-iteration-count";
+ public const String AnimationIterationCount = "animation-iteration-count";
///
/// The animation-name declaration.
///
- public static readonly String AnimationName = "animation-name";
+ public const String AnimationName = "animation-name";
///
/// The animation-play-state declaration.
///
- public static readonly String AnimationPlayState = "animation-play-state";
+ public const String AnimationPlayState = "animation-play-state";
///
/// The animation-timing-function declaration.
///
- public static readonly String AnimationTimingFunction = "animation-timing-function";
+ public const String AnimationTimingFunction = "animation-timing-function";
///
/// The background-attachment declaration.
///
- public static readonly String BackgroundAttachment = "background-attachment";
+ public const String BackgroundAttachment = "background-attachment";
///
/// The background-color declaration.
///
- public static readonly String BackgroundColor = "background-color";
+ public const String BackgroundColor = "background-color";
///
/// The background-clip declaration.
///
- public static readonly String BackgroundClip = "background-clip";
+ public const String BackgroundClip = "background-clip";
///
/// The background-origin declaration.
///
- public static readonly String BackgroundOrigin = "background-origin";
+ public const String BackgroundOrigin = "background-origin";
///
/// The background-size declaration.
///
- public static readonly String BackgroundSize = "background-size";
+ public const String BackgroundSize = "background-size";
///
/// The background-image declaration.
///
- public static readonly String BackgroundImage = "background-image";
+ public const String BackgroundImage = "background-image";
///
/// The background-position declaration.
///
- public static readonly String BackgroundPosition = "background-position";
+ public const String BackgroundPosition = "background-position";
///
/// The background-position-x declaration.
///
- public static readonly String BackgroundPositionX = "background-position-x";
+ public const String BackgroundPositionX = "background-position-x";
///
/// The background-position-y declaration.
///
- public static readonly String BackgroundPositionY = "background-position-y";
+ public const String BackgroundPositionY = "background-position-y";
///
/// The background-repeat declaration.
///
- public static readonly String BackgroundRepeat = "background-repeat";
+ public const String BackgroundRepeat = "background-repeat";
///
/// The background-repeat-x declaration.
///
- public static readonly String BackgroundRepeatX = "background-repeat-x";
+ public const String BackgroundRepeatX = "background-repeat-x";
///
/// The background-repeat-y declaration.
///
- public static readonly String BackgroundRepeatY = "background-repeat-y";
+ public const String BackgroundRepeatY = "background-repeat-y";
///
/// The background declaration.
///
- public static readonly String Background = "background";
+ public const String Background = "background";
///
/// The behavior declaration.
///
- public static readonly String Behavior = "behavior";
+ public const String Behavior = "behavior";
///
/// The baseline-shift declaration.
///
- public static readonly String BaselineShift = "baseline-shift";
+ public const String BaselineShift = "baseline-shift";
///
/// The border-color declaration.
///
- public static readonly String BorderColor = "border-color";
+ public const String BorderColor = "border-color";
///
/// The border-spacing declaration.
///
- public static readonly String BorderSpacing = "border-spacing";
+ public const String BorderSpacing = "border-spacing";
///
/// The border-collapse declaration.
///
- public static readonly String BorderCollapse = "border-collapse";
+ public const String BorderCollapse = "border-collapse";
///
/// The border-style declaration.
///
- public static readonly String BorderStyle = "border-style";
+ public const String BorderStyle = "border-style";
///
/// The border-radius declaration.
///
- public static readonly String BorderRadius = "border-radius";
+ public const String BorderRadius = "border-radius";
///
/// The border-top-left-radius declaration.
///
- public static readonly String BorderTopLeftRadius = "border-top-left-radius";
+ public const String BorderTopLeftRadius = "border-top-left-radius";
///
/// The border-top-right-radius declaration.
///
- public static readonly String BorderTopRightRadius = "border-top-right-radius";
+ public const String BorderTopRightRadius = "border-top-right-radius";
///
/// The border-bottom-left-radius declaration.
///
- public static readonly String BorderBottomLeftRadius = "border-bottom-left-radius";
+ public const String BorderBottomLeftRadius = "border-bottom-left-radius";
///
/// The border-bottom-right-radius declaration.
///
- public static readonly String BorderBottomRightRadius = "border-bottom-right-radius";
+ public const String BorderBottomRightRadius = "border-bottom-right-radius";
///
/// The box-shadow declaration.
///
- public static readonly String BoxShadow = "box-shadow";
+ public const String BoxShadow = "box-shadow";
///
/// The box-sizing declaration.
///
- public static readonly String BoxSizing = "box-sizing";
+ public const String BoxSizing = "box-sizing";
///
/// The box-decoration-break declaration.
///
- public static readonly String BoxDecorationBreak = "box-decoration-break";
+ public const String BoxDecorationBreak = "box-decoration-break";
///
/// The break-after declaration.
///
- public static readonly String BreakAfter = "break-after";
+ public const String BreakAfter = "break-after";
///
/// The break-before declaration.
///
- public static readonly String BreakBefore = "break-before";
+ public const String BreakBefore = "break-before";
///
/// The break-inside declaration.
///
- public static readonly String BreakInside = "break-inside";
+ public const String BreakInside = "break-inside";
///
/// The backface-visibility declaration.
///
- public static readonly String BackfaceVisibility = "backface-visibility";
+ public const String BackfaceVisibility = "backface-visibility";
///
/// The border-image declaration.
///
- public static readonly String BorderImage = "border-image";
+ public const String BorderImage = "border-image";
///
/// The border-image-outset declaration.
///
- public static readonly String BorderImageOutset = "border-image-outset";
+ public const String BorderImageOutset = "border-image-outset";
///
/// The border-image-repeat declaration.
///
- public static readonly String BorderImageRepeat = "border-image-repeat";
+ public const String BorderImageRepeat = "border-image-repeat";
///
/// The border-image-source declaration.
///
- public static readonly String BorderImageSource = "border-image-source";
+ public const String BorderImageSource = "border-image-source";
///
/// The border-image-slice declaration.
///
- public static readonly String BorderImageSlice = "border-image-slice";
+ public const String BorderImageSlice = "border-image-slice";
///
/// The border-image-width declaration.
///
- public static readonly String BorderImageWidth = "border-image-width";
+ public const String BorderImageWidth = "border-image-width";
///
/// The border-top declaration.
///
- public static readonly String BorderTop = "border-top";
+ public const String BorderTop = "border-top";
///
/// The border-right declaration.
///
- public static readonly String BorderRight = "border-right";
+ public const String BorderRight = "border-right";
///
/// The border-bottom declaration.
///
- public static readonly String BorderBottom = "border-bottom";
+ public const String BorderBottom = "border-bottom";
///
/// The border-left declaration.
///
- public static readonly String BorderLeft = "border-left";
+ public const String BorderLeft = "border-left";
///
/// The border-top-color declaration.
///
- public static readonly String BorderTopColor = "border-top-color";
+ public const String BorderTopColor = "border-top-color";
///
/// The border-left-color declaration.
///
- public static readonly String BorderLeftColor = "border-left-color";
+ public const String BorderLeftColor = "border-left-color";
///
/// The border-right-color declaration.
///
- public static readonly String BorderRightColor = "border-right-color";
+ public const String BorderRightColor = "border-right-color";
///
/// The border-bottom-color declaration.
///
- public static readonly String BorderBottomColor = "border-bottom-color";
+ public const String BorderBottomColor = "border-bottom-color";
///
/// The border-top-style declaration.
///
- public static readonly String BorderTopStyle = "border-top-style";
+ public const String BorderTopStyle = "border-top-style";
///
/// The border-left-style declaration.
///
- public static readonly String BorderLeftStyle = "border-left-style";
+ public const String BorderLeftStyle = "border-left-style";
///
/// The border-right-style declaration.
///
- public static readonly String BorderRightStyle = "border-right-style";
+ public const String BorderRightStyle = "border-right-style";
///
/// The border-bottom-style declaration.
///
- public static readonly String BorderBottomStyle = "border-bottom-style";
+ public const String BorderBottomStyle = "border-bottom-style";
///
/// The border-top-width declaration.
///
- public static readonly String BorderTopWidth = "border-top-width";
+ public const String BorderTopWidth = "border-top-width";
///
/// The border-left-width declaration.
///
- public static readonly String BorderLeftWidth = "border-left-width";
+ public const String BorderLeftWidth = "border-left-width";
///
/// The border-right-width declaration.
///
- public static readonly String BorderRightWidth = "border-right-width";
+ public const String BorderRightWidth = "border-right-width";
///
/// The border-bottom-width declaration.
///
- public static readonly String BorderBottomWidth = "border-bottom-width";
+ public const String BorderBottomWidth = "border-bottom-width";
///
/// The border-width declaration.
///
- public static readonly String BorderWidth = "border-width";
+ public const String BorderWidth = "border-width";
///
/// The border declaration.
///
- public static readonly String Border = "border";
+ public const String Border = "border";
///
/// The bottom declaration.
///
- public static readonly String Bottom = "bottom";
+ public const String Bottom = "bottom";
///
/// The columns declaration.
///
- public static readonly String Columns = "columns";
+ public const String Columns = "columns";
///
/// The column-count declaration.
///
- public static readonly String ColumnCount = "column-count";
+ public const String ColumnCount = "column-count";
///
/// The column-fill declaration.
///
- public static readonly String ColumnFill = "column-fill";
+ public const String ColumnFill = "column-fill";
///
/// The column-rule declaration.
///
- public static readonly String ColumnRule = "column-rule";
+ public const String ColumnRule = "column-rule";
///
/// The column-rule-color declaration.
///
- public static readonly String ColumnRuleColor = "column-rule-color";
+ public const String ColumnRuleColor = "column-rule-color";
///
/// The column-rule-style declaration.
///
- public static readonly String ColumnRuleStyle = "column-rule-style";
+ public const String ColumnRuleStyle = "column-rule-style";
///
/// The column-rule-width declaration.
///
- public static readonly String ColumnRuleWidth = "column-rule-width";
+ public const String ColumnRuleWidth = "column-rule-width";
///
/// The column-span declaration.
///
- public static readonly String ColumnSpan = "column-span";
+ public const String ColumnSpan = "column-span";
///
/// The column-width declaration.
///
- public static readonly String ColumnWidth = "column-width";
+ public const String ColumnWidth = "column-width";
///
/// The column-gap declaration.
///
- public static readonly String ColumnGap = "column-gap";
+ public const String ColumnGap = "column-gap";
///
/// The grid-row-gap declaration.
///
- public static readonly String RowGap = "row-gap";
+ public const String RowGap = "row-gap";
///
/// The gap declaration.
///
- public static readonly String Gap = "gap";
+ public const String Gap = "gap";
///
/// The caption-side declaration.
///
- public static readonly String CaptionSide = "caption-side";
+ public const String CaptionSide = "caption-side";
///
/// The clear declaration.
///
- public static readonly String Clear = "clear";
+ public const String Clear = "clear";
///
/// The clip declaration.
///
- public static readonly String Clip = "clip";
+ public const String Clip = "clip";
///
/// The clip-left declaration.
///
- public static readonly String ClipLeft = "clip-left";
+ public const String ClipLeft = "clip-left";
///
/// The clip-top declaration.
///
- public static readonly String ClipTop = "clip-top";
+ public const String ClipTop = "clip-top";
///
/// The clip-right declaration.
///
- public static readonly String ClipRight = "clip-right";
+ public const String ClipRight = "clip-right";
///
/// The clip-bottom declaration.
///
- public static readonly String ClipBottom = "clip-bottom";
+ public const String ClipBottom = "clip-bottom";
///
/// The clip-path declaration.
///
- public static readonly String ClipPath = "clip-path";
+ public const String ClipPath = "clip-path";
///
/// The clip-rule declaration.
///
- public static readonly String ClipRule = "clip-rule";
+ public const String ClipRule = "clip-rule";
///
/// The color declaration.
///
- public static readonly String Color = "color";
+ public const String Color = "color";
///
/// The color-interpolation-filters declaration.
///
- public static readonly String ColorInterpolationFilters = "color-interpolation-filters";
+ public const String ColorInterpolationFilters = "color-interpolation-filters";
///
/// The content declaration.
///
- public static readonly String Content = "content";
+ public const String Content = "content";
///
/// The counter-increment declaration.
///
- public static readonly String CounterIncrement = "counter-increment";
+ public const String CounterIncrement = "counter-increment";
///
/// The counter-reset declaration.
///
- public static readonly String CounterReset = "counter-reset";
+ public const String CounterReset = "counter-reset";
///
/// The cursor declaration.
///
- public static readonly String Cursor = "cursor";
+ public const String Cursor = "cursor";
///
/// The direction declaration.
///
- public static readonly String Direction = "direction";
+ public const String Direction = "direction";
///
/// The display declaration.
///
- public static readonly String Display = "display";
+ public const String Display = "display";
///
/// The dominant-baseline declaration.
///
- public static readonly String DominantBaseline = "dominant-baseline";
+ public const String DominantBaseline = "dominant-baseline";
///
/// The empty-cells declaration.
///
- public static readonly String EmptyCells = "empty-cells";
+ public const String EmptyCells = "empty-cells";
///
/// The enable-background declaration.
///
- public static readonly String EnableBackground = "enable-background";
+ public const String EnableBackground = "enable-background";
///
/// The fill declaration.
///
- public static readonly String Fill = "fill";
+ public const String Fill = "fill";
///
/// The fill-opacity declaration.
///
- public static readonly String FillOpacity = "fill-opacity";
+ public const String FillOpacity = "fill-opacity";
///
/// The fill-rule declaration.
///
- public static readonly String FillRule = "fill-rule";
+ public const String FillRule = "fill-rule";
///
/// The filter declaration.
///
- public static readonly String Filter = "filter";
+ public const String Filter = "filter";
///
/// The flex declaration.
///
- public static readonly String Flex = "flex";
+ public const String Flex = "flex";
///
/// The flex-basis declaration.
///
- public static readonly String FlexBasis = "flex-basis";
+ public const String FlexBasis = "flex-basis";
///
/// The flex-direction declaration.
///
- public static readonly String FlexDirection = "flex-direction";
+ public const String FlexDirection = "flex-direction";
///
/// The flex-flow declaration.
///
- public static readonly String FlexFlow = "flex-flow";
+ public const String FlexFlow = "flex-flow";
///
/// The flex-grow declaration.
///
- public static readonly String FlexGrow = "flex-grow";
+ public const String FlexGrow = "flex-grow";
///
/// The flex-shrink declaration.
///
- public static readonly String FlexShrink = "flex-shrink";
+ public const String FlexShrink = "flex-shrink";
///
/// The flex-wrap declaration.
///
- public static readonly String FlexWrap = "flex-wrap";
+ public const String FlexWrap = "flex-wrap";
///
/// The float declaration.
///
- public static readonly String Float = "float";
+ public const String Float = "float";
///
/// The font-family declaration.
///
- public static readonly String FontFamily = "font-family";
+ public const String FontFamily = "font-family";
///
/// The font-feature-settings declaration.
///
- public static readonly String FontFeatureSettings = "font-feature-settings";
+ public const String FontFeatureSettings = "font-feature-settings";
///
/// The font-size declaration.
///
- public static readonly String FontSize = "font-size";
+ public const String FontSize = "font-size";
///
/// The font-size-adjust declaration.
///
- public static readonly String FontSizeAdjust = "font-size-adjust";
+ public const String FontSizeAdjust = "font-size-adjust";
///
/// The font-style declaration.
///
- public static readonly String FontStyle = "font-style";
+ public const String FontStyle = "font-style";
///
/// The font-stretch declaration.
///
- public static readonly String FontStretch = "font-stretch";
+ public const String FontStretch = "font-stretch";
///
/// The font-variant declaration.
///
- public static readonly String FontVariant = "font-variant";
+ public const String FontVariant = "font-variant";
///
/// The font-weight declaration.
///
- public static readonly String FontWeight = "font-weight";
+ public const String FontWeight = "font-weight";
///
/// The font declaration.
///
- public static readonly String Font = "font";
+ public const String Font = "font";
///
/// The glyph-orientation-horizontal declaration.
///
- public static readonly String GlyphOrientationHorizontal = "glyph-orientation-horizontal";
+ public const String GlyphOrientationHorizontal = "glyph-orientation-horizontal";
///
/// The glyph-orientation-vertical declaration.
///
- public static readonly String GlyphOrientationVertical = "glyph-orientation-vertical";
+ public const String GlyphOrientationVertical = "glyph-orientation-vertical";
///
/// The height declaration.
///
- public static readonly String Height = "height";
+ public const String Height = "height";
///
/// The ime-mode declaration.
///
- public static readonly String ImeMode = "ime-mode";
+ public const String ImeMode = "ime-mode";
///
/// The justify-content declaration.
///
- public static readonly String JustifyContent = "justify-content";
+ public const String JustifyContent = "justify-content";
///
/// The layout-grid declaration.
///
- public static readonly String LayoutGrid = "layout-grid";
+ public const String LayoutGrid = "layout-grid";
///
/// The layout-grid-char declaration.
///
- public static readonly String LayoutGridChar = "layout-grid-char";
+ public const String LayoutGridChar = "layout-grid-char";
///
/// The layout-grid-type declaration.
///
- public static readonly String LayoutGridType = "layout-grid-type";
+ public const String LayoutGridType = "layout-grid-type";
///
/// The layout-grid-mode declaration.
///
- public static readonly String LayoutGridMode = "layout-grid-mode";
+ public const String LayoutGridMode = "layout-grid-mode";
///
/// The layout-grid-line declaration.
///
- public static readonly String LayoutGridLine = "layout-grid-line";
+ public const String LayoutGridLine = "layout-grid-line";
///
/// The grid-template-rows declaration.
///
- public static readonly String GridTemplateRows = "grid-template-rows";
+ public const String GridTemplateRows = "grid-template-rows";
///
/// The grid-template-columns declaration.
///
- public static readonly String GridTemplateColumns = "grid-template-columns";
+ public const String GridTemplateColumns = "grid-template-columns";
///
/// The grid-template-areas declaration.
///
- public static readonly String GridTemplateAreas = "grid-template-areas";
+ public const String GridTemplateAreas = "grid-template-areas";
///
/// The grid-template declaration.
///
- public static readonly String GridTemplate = "grid-template";
+ public const String GridTemplate = "grid-template";
///
/// The grid-auto-columns declaration.
///
- public static readonly String GridAutoColumns = "grid-auto-columns";
+ public const String GridAutoColumns = "grid-auto-columns";
///
/// The grid-auto-rows declaration.
///
- public static readonly String GridAutoRows = "grid-auto-rows";
+ public const String GridAutoRows = "grid-auto-rows";
///
/// The grid-auto-flow declaration.
///
- public static readonly String GridAutoFlow = "grid-auto-flow";
+ public const String GridAutoFlow = "grid-auto-flow";
///
/// The grid declaration.
///
- public static readonly String Grid = "grid";
+ public const String Grid = "grid";
///
/// The grid-row-start declaration.
///
- public static readonly String GridRowStart = "grid-row-start";
+ public const String GridRowStart = "grid-row-start";
///
/// The grid-column-start declaration.
///
- public static readonly String GridColumnStart = "grid-column-start";
+ public const String GridColumnStart = "grid-column-start";
///
/// The grid-row-end declaration.
///
- public static readonly String GridRowEnd = "grid-row-end";
+ public const String GridRowEnd = "grid-row-end";
///
/// The grid-column-end declaration.
///
- public static readonly String GridColumnEnd = "grid-column-end";
+ public const String GridColumnEnd = "grid-column-end";
///
/// The grid-row declaration.
///
- public static readonly String GridRow = "grid-row";
+ public const String GridRow = "grid-row";
///
/// The grid-column declaration.
///
- public static readonly String GridColumn = "grid-column";
+ public const String GridColumn = "grid-column";
///
/// The grid-area declaration.
///
- public static readonly String GridArea = "grid-area";
+ public const String GridArea = "grid-area";
///
/// The grid-row-gap declaration.
///
- public static readonly String GridRowGap = "grid-row-gap";
+ public const String GridRowGap = "grid-row-gap";
///
/// The grid-column-gap declaration.
///
- public static readonly String GridColumnGap = "grid-column-gap";
+ public const String GridColumnGap = "grid-column-gap";
///
/// The grid-gap declaration.
///
- public static readonly String GridGap = "grid-gap";
+ public const String GridGap = "grid-gap";
///
/// The left declaration.
///
- public static readonly String Left = "left";
+ public const String Left = "left";
///
/// The letter-spacing declaration.
///
- public static readonly String LetterSpacing = "letter-spacing";
+ public const String LetterSpacing = "letter-spacing";
///
/// The line-height declaration.
///
- public static readonly String LineHeight = "line-height";
+ public const String LineHeight = "line-height";
///
/// The list-style-image declaration.
///
- public static readonly String ListStyleImage = "list-style-image";
+ public const String ListStyleImage = "list-style-image";
///
/// The list-style-position declaration.
///
- public static readonly String ListStylePosition = "list-style-position";
+ public const String ListStylePosition = "list-style-position";
///
/// The list-style-type declaration.
///
- public static readonly String ListStyleType = "list-style-type";
+ public const String ListStyleType = "list-style-type";
///
/// The list-style declaration.
///
- public static readonly String ListStyle = "list-style";
+ public const String ListStyle = "list-style";
///
/// The margin-right declaration.
///
- public static readonly String MarginRight = "margin-right";
+ public const String MarginRight = "margin-right";
///
/// The margin-left declaration.
///
- public static readonly String MarginLeft = "margin-left";
+ public const String MarginLeft = "margin-left";
///
/// The margin-top declaration.
///
- public static readonly String MarginTop = "margin-top";
+ public const String MarginTop = "margin-top";
///
/// The margin-bottom declaration.
///
- public static readonly String MarginBottom = "margin-bottom";
+ public const String MarginBottom = "margin-bottom";
///
/// The margin declaration.
///
- public static readonly String Margin = "margin";
+ public const String Margin = "margin";
///
/// The marker declaration.
///
- public static readonly String Marker = "marker";
+ public const String Marker = "marker";
///
/// The marker-end declaration.
///
- public static readonly String MarkerEnd = "marker-end";
+ public const String MarkerEnd = "marker-end";
///
/// The marker-mid declaration.
///
- public static readonly String MarkerMid = "marker-mid";
+ public const String MarkerMid = "marker-mid";
///
/// The marker-start declaration.
///
- public static readonly String MarkerStart = "marker-start";
+ public const String MarkerStart = "marker-start";
///
/// The mask declaration.
///
- public static readonly String Mask = "mask";
+ public const String Mask = "mask";
///
/// The max-height declaration.
///
- public static readonly String MaxHeight = "max-height";
+ public const String MaxHeight = "max-height";
///
/// The max-width declaration.
///
- public static readonly String MaxWidth = "max-width";
+ public const String MaxWidth = "max-width";
///
/// The min-height declaration.
///
- public static readonly String MinHeight = "min-height";
+ public const String MinHeight = "min-height";
///
/// The min-width declaration.
///
- public static readonly String MinWidth = "min-width";
+ public const String MinWidth = "min-width";
///
/// The opacity declaration.
///
- public static readonly String Opacity = "opacity";
+ public const String Opacity = "opacity";
///
/// The order declaration.
///
- public static readonly String Order = "order";
+ public const String Order = "order";
///
/// The orphans declaration.
///
- public static readonly String Orphans = "orphans";
+ public const String Orphans = "orphans";
///
/// The outline-color declaration.
///
- public static readonly String OutlineColor = "outline-color";
+ public const String OutlineColor = "outline-color";
///
/// The outline-style declaration.
///
- public static readonly String OutlineStyle = "outline-style";
+ public const String OutlineStyle = "outline-style";
///
/// The outline-width declaration.
///
- public static readonly String OutlineWidth = "outline-width";
+ public const String OutlineWidth = "outline-width";
///
/// The outline declaration.
///
- public static readonly String Outline = "outline";
+ public const String Outline = "outline";
///
/// The overflow declaration.
///
- public static readonly String Overflow = "overflow";
+ public const String Overflow = "overflow";
///
/// The overflow-x declaration.
///
- public static readonly String OverflowX = "overflow-x";
+ public const String OverflowX = "overflow-x";
///
/// The overflow-y declaration.
///
- public static readonly String OverflowY = "overflow-y";
+ public const String OverflowY = "overflow-y";
///
/// The overflow-wrap declaration.
///
- public static readonly String OverflowWrap = "overflow-wrap";
+ public const String OverflowWrap = "overflow-wrap";
///
/// The padding-top declaration.
///
- public static readonly String PaddingTop = "padding-top";
+ public const String PaddingTop = "padding-top";
///
/// The padding-right declaration.
///
- public static readonly String PaddingRight = "padding-right";
+ public const String PaddingRight = "padding-right";
///
/// The padding-left declaration.
///
- public static readonly String PaddingLeft = "padding-left";
+ public const String PaddingLeft = "padding-left";
///
/// The padding-bottom declaration.
///
- public static readonly String PaddingBottom = "padding-bottom";
+ public const String PaddingBottom = "padding-bottom";
///
/// The padding declaration.
///
- public static readonly String Padding = "padding";
+ public const String Padding = "padding";
///
/// The page-break-after declaration.
///
- public static readonly String PageBreakAfter = "page-break-after";
+ public const String PageBreakAfter = "page-break-after";
///
/// The page-break-before declaration.
///
- public static readonly String PageBreakBefore = "page-break-before";
+ public const String PageBreakBefore = "page-break-before";
///
/// The page-break-inside declaration.
///
- public static readonly String PageBreakInside = "page-break-inside";
+ public const String PageBreakInside = "page-break-inside";
///
/// The perspective declaration.
///
- public static readonly String Perspective = "perspective";
+ public const String Perspective = "perspective";
///
/// The perspective-origin declaration.
///
- public static readonly String PerspectiveOrigin = "perspective-origin";
+ public const String PerspectiveOrigin = "perspective-origin";
///
/// The pointer-events declaration.
///
- public static readonly String PointerEvents = "pointer-events";
+ public const String PointerEvents = "pointer-events";
///
/// The position declaration.
///
- public static readonly String Position = "position";
+ public const String Position = "position";
///
/// The quotes declaration.
///
- public static readonly String Quotes = "quotes";
+ public const String Quotes = "quotes";
///
/// The resize declaration.
///
- public static readonly String Resize = "resize";
+ public const String Resize = "resize";
///
/// The right declaration.
///
- public static readonly String Right = "right";
+ public const String Right = "right";
///
/// The ruby-align declaration.
///
- public static readonly String RubyAlign = "ruby-align";
+ public const String RubyAlign = "ruby-align";
///
/// The ruby-overhang declaration.
///
- public static readonly String RubyOverhang = "ruby-overhang";
+ public const String RubyOverhang = "ruby-overhang";
///
/// The ruby-position declaration.
///
- public static readonly String RubyPosition = "ruby-position";
+ public const String RubyPosition = "ruby-position";
///
/// The scrollbar3d-light-color declaration.
///
- public static readonly String Scrollbar3dLightColor = "scrollbar3d-light-color";
+ public const String Scrollbar3dLightColor = "scrollbar3d-light-color";
///
/// The scrollbar-base-color declaration.
///
- public static readonly String ScrollbarBaseColor = "scrollbar-base-color";
+ public const String ScrollbarBaseColor = "scrollbar-base-color";
///
/// The scrollbar-arrow-color declaration.
///
- public static readonly String ScrollbarArrowColor = "scrollbar-arrow-color";
+ public const String ScrollbarArrowColor = "scrollbar-arrow-color";
///
/// The scrollbar-dark-shadow-color declaration.
///
- public static readonly String ScrollbarDarkShadowColor = "scrollbar-dark-shadow-color";
+ public const String ScrollbarDarkShadowColor = "scrollbar-dark-shadow-color";
///
/// The scrollbar-face-color declaration.
///
- public static readonly String ScrollbarFaceColor = "scrollbar-face-color";
+ public const String ScrollbarFaceColor = "scrollbar-face-color";
///
/// The scrollbar-highlight-color declaration.
///
- public static readonly String ScrollbarHighlightColor = "scrollbar-highlight-color";
+ public const String ScrollbarHighlightColor = "scrollbar-highlight-color";
///
/// The scrollbar-shadow-color declaration.
///
- public static readonly String ScrollbarShadowColor = "scrollbar-shadow-color";
+ public const String ScrollbarShadowColor = "scrollbar-shadow-color";
///
/// The scrollbar-track-color declaration.
///
- public static readonly String ScrollbarTrackColor = "scrollbar-track-color";
+ public const String ScrollbarTrackColor = "scrollbar-track-color";
///
/// The stroke declaration.
///
- public static readonly String Stroke = "stroke";
+ public const String Stroke = "stroke";
///
/// The stroke-dasharray declaration.
///
- public static readonly String StrokeDasharray = "stroke-dasharray";
+ public const String StrokeDasharray = "stroke-dasharray";
///
/// The stroke-dashoffset declaration.
///
- public static readonly String StrokeDashoffset = "stroke-dashoffset";
+ public const String StrokeDashoffset = "stroke-dashoffset";
///
/// The stroke-linecap declaration.
///
- public static readonly String StrokeLinecap = "stroke-linecap";
+ public const String StrokeLinecap = "stroke-linecap";
///
/// The stroke-linejoin declaration.
///
- public static readonly String StrokeLinejoin = "stroke-linejoin";
+ public const String StrokeLinejoin = "stroke-linejoin";
///
/// The stroke-miterlimit declaration.
///
- public static readonly String StrokeMiterlimit = "stroke-miterlimit";
+ public const String StrokeMiterlimit = "stroke-miterlimit";
///
/// The stroke-opacity declaration.
///
- public static readonly String StrokeOpacity = "stroke-opacity";
+ public const String StrokeOpacity = "stroke-opacity";
///
/// The stroke-width declaration.
///
- public static readonly String StrokeWidth = "stroke-width";
+ public const String StrokeWidth = "stroke-width";
///
/// The table-layout declaration.
///
- public static readonly String TableLayout = "table-layout";
+ public const String TableLayout = "table-layout";
///
/// The text-align declaration.
///
- public static readonly String TextAlign = "text-align";
+ public const String TextAlign = "text-align";
///
/// The text-align-last declaration.
///
- public static readonly String TextAlignLast = "text-align-last";
+ public const String TextAlignLast = "text-align-last";
///
/// The text-anchor declaration.
///
- public static readonly String TextAnchor = "text-anchor";
+ public const String TextAnchor = "text-anchor";
///
/// The text-autospace declaration.
///
- public static readonly String TextAutospace = "text-autospace";
+ public const String TextAutospace = "text-autospace";
///
/// The text-decoration declaration.
///
- public static readonly String TextDecoration = "text-decoration";
+ public const String TextDecoration = "text-decoration";
///
/// The text-decoration-color declaration.
///
- public static readonly String TextDecorationColor = "text-decoration-color";
+ public const String TextDecorationColor = "text-decoration-color";
///
/// The text-decoration-line declaration.
///
- public static readonly String TextDecorationLine = "text-decoration-line";
+ public const String TextDecorationLine = "text-decoration-line";
///
/// The text-decoration-style declaration.
///
- public static readonly String TextDecorationStyle = "text-decoration-style";
+ public const String TextDecorationStyle = "text-decoration-style";
///
/// The text-indent declaration.
///
- public static readonly String TextIndent = "text-indent";
+ public const String TextIndent = "text-indent";
///
/// The text-justify declaration.
///
- public static readonly String TextJustify = "text-justify";
+ public const String TextJustify = "text-justify";
///
/// The text-overflow declaration.
///
- public static readonly String TextOverflow = "text-overflow";
+ public const String TextOverflow = "text-overflow";
///
/// The text-shadow declaration.
///
- public static readonly String TextShadow = "text-shadow";
+ public const String TextShadow = "text-shadow";
///
/// The text-transform declaration.
///
- public static readonly String TextTransform = "text-transform";
+ public const String TextTransform = "text-transform";
///
/// The text-underline-position declaration.
///
- public static readonly String TextUnderlinePosition = "text-underline-position";
+ public const String TextUnderlinePosition = "text-underline-position";
///
/// The transform declaration.
///
- public static readonly String Transform = "transform";
+ public const String Transform = "transform";
///
/// The transform-origin declaration.
///
- public static readonly String TransformOrigin = "transform-origin";
+ public const String TransformOrigin = "transform-origin";
///
/// The transform-style declaration.
///
- public static readonly String TransformStyle = "transform-style";
+ public const String TransformStyle = "transform-style";
///
/// The transition declaration.
///
- public static readonly String Transition = "transition";
+ public const String Transition = "transition";
///
/// The transition-delay declaration.
///
- public static readonly String TransitionDelay = "transition-delay";
+ public const String TransitionDelay = "transition-delay";
///
/// The transition-duration declaration.
///
- public static readonly String TransitionDuration = "transition-duration";
+ public const String TransitionDuration = "transition-duration";
///
/// The transition-timing-function declaration.
///
- public static readonly String TransitionTimingFunction = "transition-timing-function";
+ public const String TransitionTimingFunction = "transition-timing-function";
///
/// The transition-property declaration.
///
- public static readonly String TransitionProperty = "transition-property";
+ public const String TransitionProperty = "transition-property";
///
/// The top declaration.
///
- public static readonly String Top = "top";
+ public const String Top = "top";
///
/// The unicode-bidi declaration.
///
- public static readonly String UnicodeBidi = "unicode-bidi";
+ public const String UnicodeBidi = "unicode-bidi";
///
/// The vertical-align declaration.
///
- public static readonly String VerticalAlign = "vertical-align";
+ public const String VerticalAlign = "vertical-align";
///
/// The visibility declaration.
///
- public static readonly String Visibility = "visibility";
+ public const String Visibility = "visibility";
///
/// The white-space declaration.
///
- public static readonly String WhiteSpace = "white-space";
+ public const String WhiteSpace = "white-space";
///
/// The widows declaration.
///
- public static readonly String Widows = "widows";
+ public const String Widows = "widows";
///
/// The width declaration.
///
- public static readonly String Width = "width";
+ public const String Width = "width";
///
/// The word-break declaration.
///
- public static readonly String WordBreak = "word-break";
+ public const String WordBreak = "word-break";
///
/// The word-spacing declaration.
///
- public static readonly String WordSpacing = "word-spacing";
+ public const String WordSpacing = "word-spacing";
///
/// The word-wrap declaration.
///
- public static readonly String WordWrap = "word-wrap";
+ public const String WordWrap = "word-wrap";
///
/// The writing-mode declaration.
///
- public static readonly String WritingMode = "writing-mode";
+ public const String WritingMode = "writing-mode";
///
/// The z-index declaration.
///
- public static readonly String ZIndex = "z-index";
+ public const String ZIndex = "z-index";
///
/// The zoom declaration.
///
- public static readonly String Zoom = "zoom";
+ public const String Zoom = "zoom";
///
/// The unicode-range declaration.
///
- public static readonly String UnicodeRange = "unicode-range";
+ public const String UnicodeRange = "unicode-range";
///
/// The src declaration.
///
- public static readonly String Src = "src";
+ public const String Src = "src";
///
/// The object-fit declaration.
///
- public static readonly String ObjectFit = "object-fit";
+ public const String ObjectFit = "object-fit";
///
/// The object-position declaration.
///
- public static readonly String ObjectPosition = "object-position";
+ public const String ObjectPosition = "object-position";
///
/// The min-zoom declaration.
///
- public static readonly String MinZoom = "min-zoom";
+ public const String MinZoom = "min-zoom";
///
/// The max-zoom declaration.
///
- public static readonly String MaxZoom = "max-zoom";
+ public const String MaxZoom = "max-zoom";
///
/// The user-zoom declaration.
///
- public static readonly String UserZoom = "user-zoom";
+ public const String UserZoom = "user-zoom";
///
/// The orientation declaration.
///
- public static readonly String Orientation = "orientation";
+ public const String Orientation = "orientation";
///
/// The string-set declaration.
///
- public static readonly String StringSet = "string-set";
+ public const String StringSet = "string-set";
///
/// The running declaration.
///
- public static readonly String Running = "running";
+ public const String Running = "running";
///
/// The footnote-display declaration.
///
- public static readonly String FootnoteDisplay = "footnote-display";
+ public const String FootnoteDisplay = "footnote-display";
///
/// The footnote-policy declaration.
///
- public static readonly String FootnotePolicy = "footnote-policy";
+ public const String FootnotePolicy = "footnote-policy";
///
/// The bookmark-level declaration.
///
- public static readonly String BookmarkLevel = "bookmark-level";
+ public const String BookmarkLevel = "bookmark-level";
///
/// The bookmark-label declaration.
///
- public static readonly String BookmarkLabel = "bookmark-label";
+ public const String BookmarkLabel = "bookmark-label";
///
/// The bookmark-state declaration.
///
- public static readonly String BookmarkState = "bookmark-state";
+ public const String BookmarkState = "bookmark-state";
}
}
diff --git a/src/AngleSharp.Css/MinifyStyleFormatter.cs b/src/AngleSharp.Css/MinifyStyleFormatter.cs
index 3b6b3f2f..1d804a5c 100644
--- a/src/AngleSharp.Css/MinifyStyleFormatter.cs
+++ b/src/AngleSharp.Css/MinifyStyleFormatter.cs
@@ -1,6 +1,7 @@
namespace AngleSharp.Css
{
using AngleSharp.Css.Dom;
+ using AngleSharp.Css.Values;
using AngleSharp.Text;
using System;
using System.Collections.Generic;
@@ -24,6 +25,11 @@ public class MinifyStyleFormatter : IStyleFormatter
///
public Boolean ShouldKeepEmptyRules { get; set; }
+ ///
+ /// If the Value of the Properties hsould be minimized
+ ///
+ public Boolean MinimizePropertiesValue { get; set; }
+
#endregion
#region Methods
@@ -68,8 +74,7 @@ String IStyleFormatter.BlockRules(IEnumerable rules)
return String.Empty;
}
- String IStyleFormatter.Declaration(String name, String value, Boolean important) =>
- String.Concat(name, ":", String.Concat(value, important ? "!important" : String.Empty));
+ String IStyleFormatter.Declaration(String name, String value, Boolean important) => String.Concat(name, ":", String.Concat(value, important ? "!important" : String.Empty));
String IStyleFormatter.BlockDeclarations(IEnumerable declarations)
{
@@ -81,7 +86,14 @@ String IStyleFormatter.BlockDeclarations(IEnumerable declarat
{
foreach (var declaration in declarations)
{
- declaration.ToCss(writer, this);
+ if (MinimizePropertiesValue && declaration is CssProperty property)
+ {
+ WriteMinifiedDeclaration(property, writer);
+ }
+ else
+ {
+ declaration.ToCss(writer, this);
+ }
writer.Write(Symbols.Semicolon);
}
@@ -108,6 +120,28 @@ String IStyleFormatter.Comment(String data) =>
#endregion
+ #region Minification
+
+ private void WriteMinifiedDeclaration(CssProperty property, StringWriter writer)
+ {
+ switch(property.Name)
+ {
+ case PropertyNames.GridArea:
+ {
+ var tupel = (CssTupleValue)property.RawValue;
+ if (tupel.Count == 4 && tupel[0].CssText == tupel[1].CssText && tupel[0].CssText == tupel[2].CssText && tupel[0].CssText == tupel[3].CssText)
+ {
+ writer.Write(((IStyleFormatter)this).Declaration(property.Name, tupel[0].CssText, property.IsImportant));
+ return;
+ }
+ break;
+ }
+ }
+ property.ToCss(writer, this);
+ }
+
+ #endregion
+
#region Helpers
private static Boolean IsNotEmpty(IEnumerable rules)