Added category to app defs

This commit is contained in:
Simon Martens
2022-11-26 00:58:31 +01:00
parent e12223209a
commit 49c32dcc6a
12 changed files with 225 additions and 176 deletions

View File

@@ -98,67 +98,65 @@ static void ReplaceStructure(List<(XElement appNode, List<XNode> childNodes)> no
foreach (var node in n.childNodes)
node.Remove();
}
}
var children = n.appNode.Nodes();
foreach (var c in children) {
if (c.NodeType == XmlNodeType.Element) {
var e = (XElement)c;
if (e.Name == "line" && e.Attribute("type") != null && e.Attribute("type").Value == "break")
c.Remove();
break;
}
if (!String.IsNullOrWhiteSpace(c.ToString()))
break;
}
static void CleanupLineBreaks(XDocument traditions) {
var apps = traditions.Descendants("app");
foreach (var a in apps) {
var children = a.Nodes();
RemoveLineBreaks(children);
children = children.Reverse();
foreach (var c in children) {
if (c.NodeType == XmlNodeType.Element) {
var e = (XElement)c;
if (e.Name == "line" && e.Attribute("type") != null && e.Attribute("type").Value == "break")
c.Remove();
break;
}
if (!String.IsNullOrWhiteSpace(c.ToString()))
break;
}
RemoveLineBreaks(children);
var siblings = n.appNode.NodesAfterSelf();
foreach (var c in siblings) {
if (c.NodeType == XmlNodeType.Element) {
var e = (XElement)c;
if (e.Name == "line" && e.Attribute("type") != null && e.Attribute("type").Value == "break")
c.Remove();
break;
}
if (!String.IsNullOrWhiteSpace(c.ToString()))
break;
}
var siblings = a.NodesAfterSelf();
RemoveLineBreaks(siblings);
siblings = n.appNode.NodesBeforeSelf();
foreach (var c in siblings) {
if (c.NodeType == XmlNodeType.Element) {
var e = (XElement)c;
if (e.Name == "line" && e.Attribute("type") != null && e.Attribute("type").Value == "break")
c.Remove();
break;
}
if (!String.IsNullOrWhiteSpace(c.ToString()))
siblings = a.NodesBeforeSelf();
RemoveLineBreaks(siblings);
}
}
static void RemoveLineBreaks(IEnumerable<XNode> nodes) {
foreach (var c in nodes) {
if (c.NodeType == XmlNodeType.Element) {
var e = (XElement)c;
if (e.Name == "line" && e.Attribute("type") != null && e.Attribute("type").Value == "break")
c.Remove();
break;
}
if (!String.IsNullOrWhiteSpace(c.ToString()))
break;
}
}
static void FindSingles(XDocument traditions) {
var tradition = traditions.Descendants("letterTradition");
foreach (var t in tradition) {
var nodes = t.Nodes();
var singles = new List<XNode> ();
var isnonws = false;
foreach (var n in nodes) {
if (n.NodeType == XmlNodeType.Element && ((XElement)n).Name == "app")
break;
singles.Add(n);
if (!String.IsNullOrWhiteSpace(n.ToString()))
isnonws = true;
}
if (isnonws) {
var elem = new XElement("app");
elem.SetAttributeValue("ref", "-1");
elem.Add(singles);
t.AddFirst(elem);
foreach (var n in singles)
n.Remove();
}
}
}
static void Cleanup(XDocument traditions) {
var tradition = traditions.Descendants("letterTradition").SelectMany(x => x.Descendants());
var notapp = tradition.Where(x => x.Name != "app" && !x.Ancestors("app").Any());
foreach (var e in notapp) {
if (e.Name != "line" || (e.Attribute("type") != null && e.Attribute("type")!.Value != "break"))
Console.WriteLine("Nicht app zugehöriges Element " + e.Name + " Zeile " + ((IXmlLineInfo)e).LineNumber);
}
// notapp.Remove();
var apps = traditions.Descendants("app");
foreach (var a in apps) {
if (a.Value.Last() != '\n')
@@ -182,5 +180,7 @@ var names = GetNormalizeNames(documents.Item1);
var appnumbers = GetAppNumbers(documents.Item2, names);
var contents = GetAppContents(documents.Item1);
ReplaceStructure(contents, appnumbers);
FindSingles(documents.Item1);
CleanupLineBreaks(documents.Item1);
Cleanup(documents.Item1);
Save(documents);

View File

@@ -236,15 +236,17 @@
<sourceDef index="12" name="BdIII: Nachtrag zu BdII [aus einer Abschrift Lavaters] betrifft nur BdII 221f" />
</sourceDefs>
<appDefs>
<appDef index="1" name="Veränderte Einsortierung" category="false" />
<appDef index="2" name="Korrigierte Nummerierung" category="false" />
<appDef index="3" name="Korrigierte Datierung" category="false" />
<appDef index="4" name="Provenienz" category="false" />
<appDef index="5" name="Bisherige Drucke" category="false" />
<appDef index="6" name="Digitalisat" category="false" />
<appDef index="7" name="Exzerpte" category="false" />
<appDef index="8" name="Abschriften" category="true" />
<appDef index="9" name="Anhänge" category="true" />
<appDef index="10" name="Entwürfe" category="true" />
<appDef index="-1" name="" category="Überlieferung &amp; Textkritik" />
<appDef index="0" name="Brieftext" category="Brieftext" />
<appDef index="1" name="Veränderte Einsortierung" category="Überlieferung &amp; Textkritik" />
<appDef index="2" name="Korrigierte Nummerierung" category="Überlieferung &amp; Textkritik" />
<appDef index="3" name="Korrigierte Datierung" category="Überlieferung &amp; Textkritik" />
<appDef index="4" name="Provenienz" category="Überlieferung &amp; Textkritik" />
<appDef index="5" name="Bisherige Drucke" category="Überlieferung &amp; Textkritik" />
<appDef index="6" name="Digitalisat" category="Überlieferung &amp; Textkritik" />
<appDef index="7" name="Exzerpte" category="Überlieferung &amp; Textkritik" />
<appDef index="8" name="Abschriften" category="Abschriften" />
<appDef index="9" name="Anhänge" category="Anhänge" />
<appDef index="10" name="Entwürfe" category="Entwürfe" />
</appDefs>
</definitions></opus>

View File

@@ -11793,6 +11793,7 @@ Universitätsbibliothek Basel, Autographensammlung Karl Geigy-Hagenbach, 1027.<l
<app>Bisherige Drucke</app><line type="break" />
ZH VII 142f., Nr. 1055.</letterTradition>
<letterTradition autopsic="1056" ref="1063">
<app>Provenienz</app>
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.<line type="break" />
<app>Bisherige Drucke</app><line type="break" />
ZH VII 143146, Nr. 1056.<line type="break" /></letterTradition>

View File

@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><opus><traditions>
<?xml version="1.0" encoding="utf-8"?>
<opus><traditions>
<letterTradition autopsic="0" ref="1192">
<app ref="4">
Universitäts- und Landesbibliothek Münster, Signatur: Hamann-Nachlass, Kaps. 2, 50. Neujahrsglückwünsche von Martinus Maletius mit einer späteren Notiz von Hamann. Abschrift von Arthur Warda. Original verschollen. Letzter bekannter Aufbewahrungsort: Unbekannt.
@@ -14644,9 +14646,11 @@ ZH VI 262f., Nr. 927.
</letterTradition>
<letterTradition autopsic="928" ref="935">
<letterTradition autopsic="928" ref="935"><app ref="-1">
<note>ZH druckte an dieser Stelle einen Hinweis auf einen Brief von Hamann an Elisa von der Recke. Der Wortlaut des Briefes findet sich
in dem Brief an Jacobi, 6. Februar 1786, HKB 926 (VI 258/16260/16). Original nicht überliefert.</note></letterTradition>
in dem Brief an Jacobi, 6. Februar 1786, HKB 926 (VI 258/16260/16). Original nicht überliefert.</note>
</app>
</letterTradition>
<letterTradition autopsic="929" ref="936">
@@ -17271,7 +17275,9 @@ ZH VII 142f., Nr. 1055.
<letterTradition autopsic="1056" ref="1063">
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.<line type="break" />
<app ref="4">
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.
</app>
<app ref="5">
ZH VII 143146, Nr. 1056.
</app>
@@ -20144,4 +20150,4 @@ ZH VII 515, Nr. 552a.
</letterTradition>
</traditions></opus>
</traditions></opus>

View File

@@ -2,12 +2,12 @@ namespace HaDocument.Models {
public class App {
public string Index { get; } = "";
public string Name { get; } = "";
public bool Category { get; } = false;
public string Category { get; } = "";
public App(
string index,
string name,
bool category
string category
) {
Index = index;
Name = name;

View File

@@ -13,7 +13,7 @@ namespace HaDocument.Reactors {
// State
private string Index;
private string Name;
private bool Category;
private string Category;
internal AppDefsReactor(IReader reader, IntermediateLibrary lib) : base(reader, lib) {
lib.Apps = new Dictionary<string, App>();
@@ -26,8 +26,7 @@ namespace HaDocument.Reactors {
!tag.EndTag &&
tag.IsEmpty &&
tag.Name == "appDef" &&
!String.IsNullOrWhiteSpace(tag["index"]) &&
!String.IsNullOrWhiteSpace(tag["name"])
!String.IsNullOrWhiteSpace(tag["index"])
) {
Activate(_reader, tag);
}
@@ -39,8 +38,7 @@ namespace HaDocument.Reactors {
_active = true;
Index = tag["index"];
Name = tag["name"];
if (!String.IsNullOrWhiteSpace(tag["category"] ))
Category = tag["category"] == "true" ? true : false;
Category = tag["category"];
Add();
_active = false;
}
@@ -49,7 +47,7 @@ namespace HaDocument.Reactors {
protected override void Reset() {
Index = "";
Name = "";
Category = false;
Category = "";
}
protected void Add() {

View File

@@ -151138,16 +151138,18 @@
<locationDef index="43" name="Welbergen" />
</locationDefs><appDefs>
<appDef index="1" name="Veränderte Einsortierung" category="false" />
<appDef index="2" name="Korrigierte Nummerierung" category="false" />
<appDef index="3" name="Korrigierte Datierung" category="false" />
<appDef index="4" name="Provenienz" category="false" />
<appDef index="5" name="Bisherige Drucke" category="false" />
<appDef index="6" name="Digitalisat" category="false" />
<appDef index="7" name="Exzerpte" category="false" />
<appDef index="8" name="Abschriften" category="true" />
<appDef index="9" name="Anhänge" category="true" />
<appDef index="10" name="Entwürfe" category="true" />
<appDef index="-1" name="" category="Überlieferung &amp; Textkritik" />
<appDef index="0" name="Brieftext" category="Brieftext" />
<appDef index="1" name="Veränderte Einsortierung" category="Überlieferung &amp; Textkritik" />
<appDef index="2" name="Korrigierte Nummerierung" category="Überlieferung &amp; Textkritik" />
<appDef index="3" name="Korrigierte Datierung" category="Überlieferung &amp; Textkritik" />
<appDef index="4" name="Provenienz" category="Überlieferung &amp; Textkritik" />
<appDef index="5" name="Bisherige Drucke" category="Überlieferung &amp; Textkritik" />
<appDef index="6" name="Digitalisat" category="Überlieferung &amp; Textkritik" />
<appDef index="7" name="Exzerpte" category="Überlieferung &amp; Textkritik" />
<appDef index="8" name="Abschriften" category="Abschriften" />
<appDef index="9" name="Anhänge" category="Anhänge" />
<appDef index="10" name="Entwürfe" category="Entwürfe" />
</appDefs></definitions><kommentare><kommcat value="neuzeit" sorting="1">
A
@@ -213611,9 +213613,11 @@ Staatsbibliothek zu Berlin, Lessing-Sammlung Nr. 1841 n.
Ludwig Schmitz-Kallenberg (Hg.): Aus dem Briefwechsel des Magus im Norden. Johann Georg Hamann an Franz Kaspar Bucholtz 17841788. Münster 1917, 84f.<line type="break" />
ZH VI 262f., Nr. 927.
</app>
</letterTradition><letterTradition autopsic="928" ref="935">
</letterTradition><letterTradition autopsic="928" ref="935"><app ref="-1">
<note>ZH druckte an dieser Stelle einen Hinweis auf einen Brief von Hamann an Elisa von der Recke. Der Wortlaut des Briefes findet sich
in dem Brief an Jacobi, 6. Februar 1786, HKB 926 (VI 258/16260/16). Original nicht überliefert.</note></letterTradition><letterTradition autopsic="929" ref="936">
in dem Brief an Jacobi, 6. Februar 1786, HKB 926 (VI 258/16260/16). Original nicht überliefert.</note>
</app>
</letterTradition><letterTradition autopsic="929" ref="936">
<app ref="4">
Druck ZH nach der überlieferten handschriftlichen Abschrift Arthur Wardas. Original verschollen. Letzter bekannter Aufbewahrungsort: Staats- und Universitätsbibliothek Königsberg, Msc. 2552 [Roths Hamanniana], I 5.
</app>
@@ -215851,7 +215855,9 @@ Universitätsbibliothek Basel, Autographensammlung Karl Geigy-Hagenbach, 1027.
ZH VII 142f., Nr. 1055.
</app>
</letterTradition><letterTradition autopsic="1056" ref="1063">
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.<line type="break" />
<app ref="4">
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.
</app>
<app ref="5">
ZH VII 143146, Nr. 1056.
</app>

View File

@@ -51,7 +51,6 @@ public class LetterRules {
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.BZGCLASS)) ),
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHCLASS)) ),
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EMPHCLASS)); } ),
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS)); } ),
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SUBSECTIONCLASS, tag["id"])) ),
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTCLASS, tag["id"])) ),
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITREASONCLASS)) ),
@@ -78,6 +77,16 @@ public class LetterRules {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.HANDMARKERCLASS, "ha-" + tag["ref"]));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.HANDCLASS));
}),
// Tradition specific:
( ( x, _) => x.Name == "app", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS));
reader.State.activelinecount = false;
} ),
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADZHTEXTCLASS));
reader.State.activelinecount = true;
})
};
@@ -115,7 +124,6 @@ public class LetterRules {
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
( ( x, _) => x.Name == "emph", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
( ( x, _) => x.Name == "app", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
@@ -127,7 +135,17 @@ public class LetterRules {
reader.State.mustwrap = (true, true);
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
}),
( ( x, _) => x.Name == "hand", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) )
( ( x, _) => x.Name == "hand", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
// Tradition specific:
( ( x, _) => x.Name == "app", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
reader.State.activelinecount = true;
} ),
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
reader.State.activelinecount = false;
})
};
public static readonly TextFuncList TextRules = new TextFuncList() {
@@ -147,88 +165,95 @@ public class LetterRules {
reader.State.mustwrap = (false, true);
}
// This is NOT the beginning of the text, so we set a br, and then, linecount
if(reader.State.currline != "-1") {
if (!reader.State.mustwrap.Item2)
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", CSSClasses.ZHBREAKCLASS));
else
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
reader.State.mustwrap = (false, false);
// Linecount
if(!String.IsNullOrWhiteSpace(tag["index"])) {
reader.State.currline = tag["index"];
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
// Fall 1: Neue Seite
if (reader.State.pagebreak == true) {
reader.State.pagebreak = false;
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHPAGECLASS, ""));
sb.Append("S.&nbsp;" + reader.State.currpage);
}
// Fall 2: Neue Zeile, teilbar durch 5
else if (Int32.TryParse(tag["index"], out var _) && Int32.Parse(tag["index"]) % 5 == 0) {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECLASS, ""));
sb.Append(tag["index"]);
}
// Line count, do if in counted lines
if(reader.State.activelinecount) {
// This is NOT the beginning of the text, so we set a br, and then, linecount
if(reader.State.currline != "-1") {
if (!reader.State.mustwrap.Item2)
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", CSSClasses.ZHBREAKCLASS));
else
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
reader.State.mustwrap = (false, false);
// Fall 3: Neue Zeile, nicht teilbar durch 5, deswegen versteckt
else {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECLASS + " " + CSSClasses.HIDDENZHLINECOUNT, ""));
sb.Append(tag["index"]);
// Linecount
if(!String.IsNullOrWhiteSpace(tag["index"])) {
reader.State.currline = tag["index"];
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
// Fall 1: Neue Seite
if (reader.State.pagebreak == true) {
reader.State.pagebreak = false;
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHPAGECLASS, ""));
sb.Append("S.&nbsp;" + reader.State.currpage);
}
// Fall 2: Neue Zeile, teilbar durch 5
else if (Int32.TryParse(tag["index"], out var _) && Int32.Parse(tag["index"]) % 5 == 0) {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECLASS, ""));
sb.Append(tag["index"]);
}
// Fall 3: Neue Zeile, nicht teilbar durch 5, deswegen versteckt
else {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECLASS + " " + CSSClasses.HIDDENZHLINECOUNT, ""));
sb.Append(tag["index"]);
}
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
}
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
} else if (reader.State.currline == "-1" && !String.IsNullOrWhiteSpace(tag["index"])) {
reader.State.Startline = tag["index"];
reader.State.currline = tag["index"];
reader.State.pagebreak = false;
}
} else if (reader.State.currline == "-1" && !String.IsNullOrWhiteSpace(tag["index"])) {
reader.State.Startline = tag["index"];
reader.State.currline = tag["index"];
reader.State.pagebreak = false;
}
// Marginalien, only for lines with a linenumber
if(reader.State.Marginals != null && !String.IsNullOrWhiteSpace(tag["index"])) {
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
if (margs != null && margs.Any())
{
if(reader.State.ParsedMarginals == null) reader.State.ParsedMarginals = new List<(string, string, string)>();
var sb2 = new StringBuilder();
margs = margs.OrderBy(x => Int32.Parse(x.Index));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINGALBOXCLASS));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALLISTCLASS));
foreach (var marginal in margs)
// Marginalien, only for lines with a linenumber
if(reader.State.Marginals != null && !String.IsNullOrWhiteSpace(tag["index"])) {
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
if (margs != null && margs.Any())
{
// In Marginal, the Root-Element (<marginal>) 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<HaWeb.Settings.ParsingState.LetterState>(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<HaWeb.Settings.ParsingState.LetterState>(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();
if(reader.State.ParsedMarginals == null) reader.State.ParsedMarginals = new List<(string, string, string)>();
var sb2 = new StringBuilder();
margs = margs.OrderBy(x => Int32.Parse(x.Index));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINGALBOXCLASS));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALLISTCLASS));
foreach (var marginal in margs)
{
// In Marginal, the Root-Element (<marginal>) 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<HaWeb.Settings.ParsingState.LetterState>(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<HaWeb.Settings.ParsingState.LetterState>(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));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
reader.State.ParsedMarginals.Add((reader.State.currpage, reader.State.currline, sb2.ToString()));
}
}
// Line type=line
if(tag["type"] == "line") {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LINELINECLASS));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
reader.State.mustwrap = (false, true);
}
// Line tab=
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LINEINDENTCLASS + tag["tab"]));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
reader.State.ParsedMarginals.Add((reader.State.currpage, reader.State.currline, sb2.ToString()));
if (tag["tab"] != "1") reader.State.mustwrap = (false, true);
}
}
// Line type=line
if(tag["type"] == "line") {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LINELINECLASS));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
reader.State.mustwrap = (false, true);
}
// Line tab=
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LINEINDENTCLASS + tag["tab"]));
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
if (tag["tab"] != "1") reader.State.mustwrap = (false, true);
if (!reader.State.activelinecount) {
sb.Append("<br>");
}
}
)};

View File

@@ -81,7 +81,7 @@ public static class TraditionRules {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.HANDCLASS));
}),
// Tradition specific:
// Tradition specific:
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS)); } ),
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADZHTEXTCLASS));

View File

@@ -39,6 +39,8 @@ public class LetterState : HaWeb.HTMLParser.IState {
internal bool minwidth;
// Did a pagebreak just occur?
internal bool pagebreak = false;
// Are we in line-counted territory?
internal bool activelinecount;
// Results
internal StringBuilder sb_lettertext;
@@ -63,6 +65,7 @@ public class LetterState : HaWeb.HTMLParser.IState {
currline = "-1";
mustwrap = (false, false);
minwidth = false;
activelinecount = true;
// Initialize State
if (Meta.ZH != null && !String.IsNullOrWhiteSpace(Meta.ZH.Page)) {

View File

@@ -236,15 +236,17 @@
<sourceDef index="12" name="BdIII: Nachtrag zu BdII [aus einer Abschrift Lavaters] betrifft nur BdII 221f" />
</sourceDefs>
<appDefs>
<appDef index="1" name="Veränderte Einsortierung" category="false" />
<appDef index="2" name="Korrigierte Nummerierung" category="false" />
<appDef index="3" name="Korrigierte Datierung" category="false" />
<appDef index="4" name="Provenienz" category="false" />
<appDef index="5" name="Bisherige Drucke" category="false" />
<appDef index="6" name="Digitalisat" category="false" />
<appDef index="7" name="Exzerpte" category="false" />
<appDef index="8" name="Abschriften" category="true" />
<appDef index="9" name="Anhänge" category="true" />
<appDef index="10" name="Entwürfe" category="true" />
<appDef index="-1" name="" category="Überlieferung &amp; Textkritik" />
<appDef index="0" name="Brieftext" category="Brieftext" />
<appDef index="1" name="Veränderte Einsortierung" category="Überlieferung &amp; Textkritik" />
<appDef index="2" name="Korrigierte Nummerierung" category="Überlieferung &amp; Textkritik" />
<appDef index="3" name="Korrigierte Datierung" category="Überlieferung &amp; Textkritik" />
<appDef index="4" name="Provenienz" category="Überlieferung &amp; Textkritik" />
<appDef index="5" name="Bisherige Drucke" category="Überlieferung &amp; Textkritik" />
<appDef index="6" name="Digitalisat" category="Überlieferung &amp; Textkritik" />
<appDef index="7" name="Exzerpte" category="Überlieferung &amp; Textkritik" />
<appDef index="8" name="Abschriften" category="Abschriften" />
<appDef index="9" name="Anhänge" category="Anhänge" />
<appDef index="10" name="Entwürfe" category="Entwürfe" />
</appDefs>
</definitions></opus>

View File

@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><opus><traditions>
<?xml version="1.0" encoding="utf-8"?>
<opus><traditions>
<letterTradition autopsic="0" ref="1192">
<app ref="4">
Universitäts- und Landesbibliothek Münster, Signatur: Hamann-Nachlass, Kaps. 2, 50. Neujahrsglückwünsche von Martinus Maletius mit einer späteren Notiz von Hamann. Abschrift von Arthur Warda. Original verschollen. Letzter bekannter Aufbewahrungsort: Unbekannt.
@@ -14644,9 +14646,11 @@ ZH VI 262f., Nr. 927.
</letterTradition>
<letterTradition autopsic="928" ref="935">
<letterTradition autopsic="928" ref="935"><app ref="-1">
<note>ZH druckte an dieser Stelle einen Hinweis auf einen Brief von Hamann an Elisa von der Recke. Der Wortlaut des Briefes findet sich
in dem Brief an Jacobi, 6. Februar 1786, HKB 926 (VI 258/16260/16). Original nicht überliefert.</note></letterTradition>
in dem Brief an Jacobi, 6. Februar 1786, HKB 926 (VI 258/16260/16). Original nicht überliefert.</note>
</app>
</letterTradition>
<letterTradition autopsic="929" ref="936">
@@ -17271,7 +17275,9 @@ ZH VII 142f., Nr. 1055.
<letterTradition autopsic="1056" ref="1063">
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.<line type="break" />
<app ref="4">
Universitäts- und Landesbibliothek Münster, Signatur: Nachlass Gallitzin, 20, 3. Zeitgenössische Abschrift von unbekannter Hand.
</app>
<app ref="5">
ZH VII 143146, Nr. 1056.
</app>
@@ -20144,4 +20150,4 @@ ZH VII 515, Nr. 552a.
</letterTradition>
</traditions></opus>
</traditions></opus>