namespace HaWeb.Settings.ParsingRules; using System.Text; using System.Text.RegularExpressions; using TagFuncList = List<(Func, bool>, Action>)>; using TextFuncList = List<(Func, bool>, Action>)>; using WhitespaceFuncList = List<(Func, bool>, Action>)>; public static class CommentRules { private static readonly string DEFAULTELEMENT = HaWeb.Settings.HTML.DEFAULTELEMENT; private static readonly string LEMMACLASS = HaWeb.Settings.CSSClasses.LEMMACLASS; private static readonly string TITLECLASS = HaWeb.Settings.CSSClasses.TITLECLASS; private static readonly string ENTRYCLASS = HaWeb.Settings.CSSClasses.ENTRYCLASS; public static readonly TagFuncList OTagRules = new TagFuncList() { ( (x, _) => x.Name == "lemma", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LEMMACLASS))), ( (x, _) => x.Name == "title", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TITLECLASS))), ( (x, _) => x.Name == "titel", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TITLECLASS))), ( (x, _) => x.Name == "eintrag", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ENTRYCLASS))), }; public static readonly TagFuncList CTagRules = new TagFuncList() { ( (x, _) => x.Name == "lemma", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT))), ( (x, _) => x.Name == "title", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT))), ( (x, _) => x.Name == "titel", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT))), ( (x, _) => x.Name == "eintrag", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT))), }; public static readonly TagFuncList STagRules = new TagFuncList() { ( (x, _) => x.Name == "line", (sb, tag, _) => sb.Append(HTMLHelpers.TagHelpers.CreateElement("br")) ) }; public static readonly TextFuncList TextRules = new TextFuncList() { ( (x, _) => true, ( sb, txt, reader) => { sb.Append(txt.Value); if (reader.State.Category == "bibel" && reader.State.Type == HaWeb.Settings.ParsingState.CommentType.Subcomment && reader.OpenTags.Any() && reader.OpenTags.Last().Name == "lemma" && !txt.Value.Contains("Stücke zu") && !txt.Value.Contains("ZusDan")) { var lnkstring = Regex.Replace(txt.Value, @"\s+", string.Empty); sb.Append(HTMLHelpers.TagHelpers.CreateCustomElement("a", new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "href", Value = "https://www.bibleserver.com/LUT/" + lnkstring}, new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "target", Value = "_blank"}, new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "rel", Value = "noopener noreferrer"})); sb.Append(""); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement("a")); } })}; public static readonly WhitespaceFuncList WhitespaceRules = new WhitespaceFuncList() { ( (x, _) => true, ( sb, txt, _) => sb.Append(txt.Value) ) }; }