AngleSharp by AngleSharp

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

.NET API 1,230,848 bytes

 DefaultAttributeObserver

Represents the default attribute observer.
using AngleSharp.Dom.Html; using AngleSharp.Dom.Svg; using AngleSharp.Extensions; using AngleSharp.Html; using System; using System.Collections.Generic; namespace AngleSharp.Dom { public class DefaultAttributeObserver : IAttributeObserver { private readonly List<Action<IElement, string, string>> _actions; public DefaultAttributeObserver() { _actions = new List<Action<IElement, string, string>>(); RegisterStandardObservers(); } protected virtual void RegisterStandardObservers() { RegisterObserver(AttributeNames.Class, delegate(Element element, string value) { element.UpdateClassList(value); }); RegisterObserver(AttributeNames.DropZone, delegate(HtmlElement element, string value) { element.UpdateDropZone(value); }); RegisterObserver(AttributeNames.Style, delegate(HtmlElement element, string value) { element.UpdateStyle(value); }); RegisterObserver(AttributeNames.Href, delegate(HtmlBaseElement element, string value) { element.UpdateUrl(value); }); RegisterObserver(AttributeNames.Src, delegate(HtmlEmbedElement element, string value) { element.UpdateSource(value); }); RegisterObserver(AttributeNames.Sizes, delegate(HtmlLinkElement element, string value) { element.UpdateSizes(value); }); RegisterObserver(AttributeNames.Media, delegate(HtmlLinkElement element, string value) { element.UpdateMedia(value); }); RegisterObserver(AttributeNames.Disabled, delegate(HtmlLinkElement element, string value) { element.UpdateDisabled(value); }); RegisterObserver(AttributeNames.Href, delegate(HtmlLinkElement element, string value) { element.UpdateSource(value); }); RegisterObserver(AttributeNames.Rel, delegate(HtmlLinkElement element, string value) { element.UpdateRelation(value); }); RegisterObserver(AttributeNames.Rel, delegate(HtmlUrlBaseElement element, string value) { element.UpdateRel(value); }); RegisterObserver(AttributeNames.Ping, delegate(HtmlUrlBaseElement element, string value) { element.UpdatePing(value); }); RegisterObserver(AttributeNames.Headers, delegate(HtmlTableCellElement element, string value) { element.UpdateHeaders(value); }); RegisterObserver(AttributeNames.Media, delegate(HtmlStyleElement element, string value) { element.UpdateMedia(value); }); RegisterObserver(AttributeNames.Value, delegate(HtmlSelectElement element, string value) { element.UpdateValue(value); }); RegisterObserver(AttributeNames.For, delegate(HtmlOutputElement element, string value) { element.UpdateFor(value); }); RegisterObserver(AttributeNames.Data, delegate(HtmlObjectElement element, string value) { element.UpdateSource(value); }); RegisterObserver(AttributeNames.Src, delegate(HtmlAudioElement element, string value) { element.UpdateSource(value); }); RegisterObserver(AttributeNames.Src, delegate(HtmlVideoElement element, string value) { element.UpdateSource(value); }); RegisterObserver(AttributeNames.Src, delegate(HtmlImageElement element, string value) { element.UpdateSource(); }); RegisterObserver(AttributeNames.SrcSet, delegate(HtmlImageElement element, string value) { element.UpdateSource(); }); RegisterObserver(AttributeNames.Sizes, delegate(HtmlImageElement element, string value) { element.UpdateSource(); }); RegisterObserver(AttributeNames.CrossOrigin, delegate(HtmlImageElement element, string value) { element.UpdateSource(); }); RegisterObserver(AttributeNames.Sandbox, delegate(HtmlIFrameElement element, string value) { element.UpdateSandbox(value); }); RegisterObserver(AttributeNames.SrcDoc, delegate(HtmlIFrameElement element, string value) { element.UpdateSource(); }); RegisterObserver(AttributeNames.Src, delegate(HtmlFrameElementBase element, string value) { element.UpdateSource(); }); RegisterObserver(AttributeNames.Style, delegate(SvgElement element, string value) { element.UpdateStyle(value); }); RegisterObserver(AttributeNames.Type, delegate(HtmlInputElement element, string value) { element.UpdateType(value); }); } public void RegisterObserver<TElement>(string expectedName, Action<TElement, string> callback) where TElement : IElement { _actions.Add((Action<IElement, string, string>)delegate(IElement element, string actualName, string value) { if (element is TElement && actualName.Is(expectedName)) callback((TElement)element, value); }); } void IAttributeObserver.NotifyChange(IElement host, string name, string value) { foreach (Action<IElement, string, string> action in _actions) { action(host, name, value); } } } }