AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.8" />

 PrettyStyleFormatter

Represents the an CSS3 markup formatter with inserted intends.
using AngleSharp.Extensions; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace AngleSharp.Css { public class PrettyStyleFormatter : IStyleFormatter { private string _intendString; private string _newLineString; public string Indentation { get { return _intendString; } set { _intendString = value; } } public string NewLine { get { return _newLineString; } set { _newLineString = value; } } public PrettyStyleFormatter() { _intendString = "\t"; _newLineString = "\n"; } string IStyleFormatter.Sheet(IEnumerable<IStyleFormattable> rules) { StringBuilder sb = Pool.NewStringBuilder(); bool flag = true; using (StringWriter stringWriter = new StringWriter(sb)) { foreach (IStyleFormattable rule in rules) { if (flag) flag = false; else { stringWriter.Write(_newLineString); stringWriter.Write(_newLineString); } rule.ToCss(stringWriter, this); } } return sb.ToPool(); } string IStyleFormatter.Block(IEnumerable<IStyleFormattable> rules) { StringBuilder stringBuilder = Pool.NewStringBuilder().Append('{').Append(' '); using (StringWriter stringWriter = new StringWriter(stringBuilder)) { foreach (IStyleFormattable rule in rules) { stringWriter.Write(_newLineString); stringWriter.Write(Intend(rule.ToCss(this))); stringWriter.Write(_newLineString); } } return stringBuilder.Append('}').ToPool(); } string IStyleFormatter.Declaration(string name, string value, bool important) { return CssStyleFormatter.Instance.Declaration(name, value, important); } string IStyleFormatter.Declarations(IEnumerable<string> declarations) { return string.Join(_newLineString, from m in declarations select m + ";"); } string IStyleFormatter.Medium(bool exclusive, bool inverse, string type, IEnumerable<IStyleFormattable> constraints) { return CssStyleFormatter.Instance.Medium(exclusive, inverse, type, constraints); } string IStyleFormatter.Constraint(string name, string value) { return CssStyleFormatter.Instance.Constraint(name, value); } string IStyleFormatter.Rule(string name, string value) { return CssStyleFormatter.Instance.Rule(name, value); } string IStyleFormatter.Rule(string name, string prelude, string rules) { return CssStyleFormatter.Instance.Rule(name, prelude, rules); } string IStyleFormatter.Style(string selector, IStyleFormattable rules) { StringBuilder stringBuilder = Pool.NewStringBuilder().Append(selector).Append(" {"); string text = rules.ToCss(this); if (!string.IsNullOrEmpty(text)) { stringBuilder.Append(_newLineString); stringBuilder.Append(Intend(text)); stringBuilder.Append(_newLineString); } else stringBuilder.Append(' '); return stringBuilder.Append('}').ToPool(); } string IStyleFormatter.Comment(string data) { return CssStyleFormatter.Instance.Comment(data); } private string Intend(string content) { return _intendString + content.Replace(_newLineString, _newLineString + _intendString); } } }