From 97a8ccbe8802a06163b489585887fa7f2035fc8b Mon Sep 17 00:00:00 2001 From: schnulller Date: Thu, 26 May 2022 17:28:45 +0200 Subject: [PATCH] Added ParsedMarginals to LetterRules. Still last TODO open. --- HaWeb/Settings/ParsingRules/LetterRules.cs | 9 ++++++--- HaWeb/Settings/ParsingState/LetterState.cs | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/HaWeb/Settings/ParsingRules/LetterRules.cs b/HaWeb/Settings/ParsingRules/LetterRules.cs index 3f494cc..45e053e 100644 --- a/HaWeb/Settings/ParsingRules/LetterRules.cs +++ b/HaWeb/Settings/ParsingRules/LetterRules.cs @@ -230,21 +230,24 @@ public class LetterRules var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline); if (margs != null && margs.Any()) { + var sb2 = new StringBuilder(); margs = margs.OrderBy(x => Int32.Parse(x.Index)); + sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline)); + sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS)); foreach (var marginal in margs) { - sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTMARKERCLASS, "ma-" + marginal.Index)); - sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); - // In Marginal, the Root-Element () is somehow parsed, // so we don't need to enclose it in a seperate div. var rd = reader.State.ReaderService.RequestStringReader(marginal.Element); new HaWeb.HTMLParser.XMLHelper(reader.State, rd, sb, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules); new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false); + new HaWeb.HTMLParser.XMLHelper(reader.State, rd, sb2, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules); + new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb2, false); rd.Read(); } sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); + reader.State.ParsedMarginals.Add((reader.State.currpage, reader.State.currline, sb2.ToString())); } } diff --git a/HaWeb/Settings/ParsingState/LetterState.cs b/HaWeb/Settings/ParsingState/LetterState.cs index 29cbaa3..673bc4f 100644 --- a/HaWeb/Settings/ParsingState/LetterState.cs +++ b/HaWeb/Settings/ParsingState/LetterState.cs @@ -19,6 +19,8 @@ public class LetterState : HaWeb.HTMLParser.IState { internal IEnumerable? Hands; internal IEnumerable? Edits; + internal List<(string, string, string)> ParsedMarginals; + // State internal bool active_del; internal bool active_skipwhitespace; @@ -41,6 +43,7 @@ public class LetterState : HaWeb.HTMLParser.IState { public void SetupState() { + ParsedMarginals = new List<(string, string, string)>(); sb_lettertext = new StringBuilder(); active_skipwhitespace = true; currline = "-1";