CssStyleSheet
sealed class CssStyleSheet : CssNode, ICssStyleSheet, IStyleSheet, IStyleFormattable, ICssNode, ICssRuleCreator
Represents a CSS Stylesheet.
using AngleSharp.Dom.Collections;
using AngleSharp.Html;
using AngleSharp.Network;
using AngleSharp.Parser.Css;
using System.IO;
namespace AngleSharp.Dom.Css
{
internal sealed class CssStyleSheet : CssNode, ICssStyleSheet, IStyleSheet, IStyleFormattable, ICssNode, ICssRuleCreator
{
private readonly MediaList _media;
private readonly string _url;
private readonly IElement _owner;
private readonly ICssStyleSheet _parent;
private readonly CssRuleList _rules;
private readonly CssParser _parser;
private readonly ICssRule _ownerRule;
public string Type => MimeTypeNames.Css;
public bool IsDisabled { get; set; }
public IElement OwnerNode => _owner;
public ICssStyleSheet Parent => _parent;
public string Href => _url;
public string Title {
get {
if (_owner == null)
return null;
return _owner.GetAttribute(AttributeNames.Title);
}
}
public IMediaList Media => _media;
ICssRuleList ICssStyleSheet.Rules {
get {
return Rules;
}
}
public ICssRule OwnerRule => _ownerRule;
internal CssRuleList Rules => _rules;
internal CssStyleSheet(CssParser parser, string url, IElement owner)
{
_media = new MediaList(parser);
_owner = owner;
_url = url;
_rules = new CssRuleList(this);
_parser = parser;
}
internal CssStyleSheet(CssParser parser, string url, ICssStyleSheet parent)
: this(parser, url, parent?.OwnerNode)
{
_parent = parent;
}
internal CssStyleSheet(CssParser parser)
: this(parser, (string)null, (ICssStyleSheet)null)
{
}
internal CssStyleSheet(CssRule ownerRule, string url)
: this(ownerRule.Parser, url, ownerRule.Owner)
{
_ownerRule = ownerRule;
}
public ICssRule AddNewRule(CssRuleType ruleType)
{
CssRule cssRule = _parser.CreateRule(ruleType);
Rules.Add(cssRule);
return cssRule;
}
public override void ToCss(TextWriter writer, IStyleFormatter formatter)
{
writer.Write(formatter.Sheet(Rules));
}
public void RemoveAt(int index)
{
Rules.RemoveAt(index);
}
public int Insert(string ruleText, int index)
{
CssRule cssRule = _parser.ParseRule(ruleText);
cssRule.Owner = this;
Rules.Insert(index, cssRule);
return index;
}
}
}