CssStyleSheet
Represents a CSS Stylesheet.
using AngleSharp.Network;
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssStyleSheet : StyleSheet, ICssStyleSheet, IStyleSheet, IStyleFormattable
{
private readonly CssRuleList _rules;
private readonly TextSource _source;
private readonly IConfiguration _config;
private ICssRule _ownerRule;
public override string Type => MimeTypes.Css;
ICssRuleList ICssStyleSheet.Rules {
get {
return _rules;
}
}
public ICssRule OwnerRule {
get {
return _ownerRule;
}
internal set {
_ownerRule = value;
}
}
public string CssText => ToCss();
internal CssRuleList Rules => _rules;
internal TextSource Source => _source;
internal IConfiguration Options => _config;
internal CssStyleSheet(IConfiguration config)
: this(config, new TextSource(string.Empty))
{
}
internal CssStyleSheet(IConfiguration config, string source)
: this(config, new TextSource(source))
{
}
internal CssStyleSheet(IConfiguration config, TextSource source)
{
_source = source;
_rules = new CssRuleList();
_config = (config ?? Configuration.Default);
}
public override string ToCss(IStyleFormatter formatter)
{
return formatter.Sheet(_rules);
}
public void RemoveAt(int index)
{
_rules.RemoveAt(index);
}
public int Insert(string rule, int index)
{
CssRule value = CssParser.ParseRule(rule);
_rules.Insert(value, index, this, null);
return index;
}
internal void AddRule(CssRule rule)
{
if (rule != null)
_rules.Add(rule, this, null);
}
}
}