CssStyleSheet
Represents a CSS Stylesheet.
using AngleSharp.Network;
using AngleSharp.Parser.Css;
using System.Text;
namespace AngleSharp.Dom.Css
{
internal sealed class CssStyleSheet : StyleSheet, ICssStyleSheet, IStyleSheet
{
private readonly CssRuleList _rules;
private readonly TextSource _source;
private ICssRule _ownerRule;
private IConfiguration _options;
public override string Type => MimeTypes.Css;
internal CssRuleList Rules => _rules;
ICssRuleList ICssStyleSheet.Rules {
get {
return _rules;
}
}
public ICssRule OwnerRule {
get {
return _ownerRule;
}
internal set {
_ownerRule = value;
}
}
internal TextSource Source => _source;
public string CssText {
get {
StringBuilder stringBuilder = Pool.NewStringBuilder();
foreach (ICssRule rule in _rules) {
stringBuilder.AppendLine(rule.CssText);
}
return stringBuilder.ToPool();
}
}
internal IConfiguration Options {
get {
return _options ?? Configuration.Default;
}
set {
_options = value;
}
}
internal CssStyleSheet()
: this(string.Empty)
{
}
internal CssStyleSheet(string source)
: this(new TextSource(source))
{
}
internal CssStyleSheet(TextSource source)
{
_source = source;
_rules = new CssRuleList();
}
public void RemoveAt(int index)
{
_rules.RemoveAt(index);
}
public int Insert(string rule, int index)
{
CssRule value = CssParser.ParseRule(rule, null);
_rules.Insert(value, index, this, null);
return index;
}
}
}