/// <summary>
/// Regex: Tags bei dennen nur Beginntag und Endetag interresant sind
/// </summary>
internal static string ParseOnlyTag()
{
string comHtml = string.Empty;
string relHtml = string.Empty;
foreach (string tag in HTMLTags().Keys)
{
if (HTMLTags()[tag])
comHtml += tag + "|";
else
relHtml += tag + "|";
}
comHtml = comHtml.Remove(comHtml.Length - 1);
relHtml = relHtml.Remove(relHtml.Length - 1);
return @"(?'htmlbegin'<[^\w<>]*?(?'htmltag'" + relHtml + @")[^\w<>]* *[^<>]*>)" +
@"|(?'htmlbegin'< *?(?'htmltag'" + comHtml + @")[^\w<>]* *[^<>]*/ *>)";
}
/// <summary>
/// erlaubte Tags
/// </summary>
internal static Dictionary<string, bool> HTMLTags()
{
if (htmlTags == null)
{
htmlTags = new Dictionary<string, bool>();
htmlTags.Add("p", false);
htmlTags.Add("span", false);
htmlTags.Add("pre", false);
htmlTags.Add("div", false);
htmlTags.Add("center", false);
htmlTags.Add("big", false);
htmlTags.Add("small", false);
htmlTags.Add("s", false);
htmlTags.Add("u", false);
htmlTags.Add("font", false);
htmlTags.Add("b", false);
htmlTags.Add("i", false);
htmlTags.Add("br", false);
htmlTags.Add("tt", false);
htmlTags.Add("code", true);
htmlTags.Add("sup", false);
htmlTags.Add("sub", false);
htmlTags.Add("hr", false);
htmlTags.Add("h1", false);
htmlTags.Add("h2", false);
htmlTags.Add("h3", false);
htmlTags.Add("h4", false);
htmlTags.Add("h5", false);
htmlTags.Add("h6", false);
htmlTags.Add("ul", false);
htmlTags.Add("ol", false);
htmlTags.Add("li", false);
htmlTags.Add("poem", true);
htmlTags.Add("ref", true);
htmlTags.Add("references", false);
htmlTags.Add("nowiki", true);
htmlTags.Add("source", true); //Quellcode anzeige (Syntaxhervorhebung)
htmlTags.Add("hiero", true); //Hieroglyphen
htmlTags.Add("math", true); //Math. Formeln
}
return htmlTags;
}