MathElementFactory
Provides string to MathElement instance creation mappings.
using AngleSharp.Dom;
using AngleSharp.Dom.Mathml;
using AngleSharp.Html;
using System;
using System.Collections.Generic;
namespace AngleSharp.Services.Default
{
internal sealed class MathElementFactory : IElementFactory<MathElement>
{
private delegate MathElement Creator (Document owner, string prefix);
private readonly Dictionary<string, Creator> creators = new Dictionary<string, Creator>(StringComparer.OrdinalIgnoreCase) {
{
TagNames.Mn,
(Document document, string prefix) => new MathNumberElement(document, prefix)
},
{
TagNames.Mo,
(Document document, string prefix) => new MathOperatorElement(document, prefix)
},
{
TagNames.Mi,
(Document document, string prefix) => new MathIdentifierElement(document, prefix)
},
{
TagNames.Ms,
(Document document, string prefix) => new MathStringElement(document, prefix)
},
{
TagNames.Mtext,
(Document document, string prefix) => new MathTextElement(document, prefix)
},
{
TagNames.AnnotationXml,
(Document document, string prefix) => new MathAnnotationXmlElement(document, prefix)
}
};
public MathElement Create(Document document, string localName, string prefix = null)
{
Creator value = null;
if (creators.TryGetValue(localName, out value))
return value(document, prefix);
return new MathElement(document, localName, prefix, NodeFlags.None);
}
}
}