EventFactory
Provides string to Event instance creation mappings.
using AngleSharp.Dom.Events;
using System;
using System.Collections.Generic;
namespace AngleSharp.Services.Default
{
internal sealed class EventFactory : IEventFactory
{
private delegate Event Creator ();
private readonly Dictionary<string, Creator> creators = new Dictionary<string, Creator>(StringComparer.OrdinalIgnoreCase) {
{
"event",
() => new Event()
},
{
"uievent",
() => new UiEvent()
},
{
"focusevent",
() => new FocusEvent()
},
{
"keyboardevent",
() => new KeyboardEvent()
},
{
"mouseevent",
() => new MouseEvent()
},
{
"wheelevent",
() => new WheelEvent()
},
{
"customevent",
() => new CustomEvent()
}
};
public EventFactory()
{
AddEventAlias("events", "event");
AddEventAlias("htmlevents", "event");
AddEventAlias("uievents", "uievent");
AddEventAlias("keyevents", "keyboardevent");
AddEventAlias("mouseevents", "mouseevent");
}
private void AddEventAlias(string aliasName, string aliasFor)
{
creators.Add(aliasName, creators[aliasFor]);
}
public Event Create(string name)
{
Creator value = null;
if (name != null && creators.TryGetValue(name, out value))
return value();
return null;
}
}
}