AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="1.0.1-alpha-248" />

.NET API 886,272 bytes

 DefaultAttributeObserver

Represents the default attribute observer.
using AngleSharp.Html.Dom; using AngleSharp.Text; using System; using System.Collections.Generic; using System.Runtime.CompilerServices; namespace AngleSharp.Dom { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] 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.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(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.Type, delegate(HtmlInputElement element, string value) { element.UpdateType(value); }); } public void RegisterObserver<[System.Runtime.CompilerServices.Nullable(0)] 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) { TElement arg = (TElement)element; if (actualName.Is(expectedName)) callback(arg, value); } }); } void IAttributeObserver.NotifyChange(IElement host, string name, [System.Runtime.CompilerServices.Nullable(2)] string value) { foreach (Action<IElement, string, string> action in _actions) { action(host, name, value); } } } }