diff --git a/data/configs/vbvg.toml b/data/configs/vbvg.toml
index c49956e..46d3d2c 100644
--- a/data/configs/vbvg.toml
+++ b/data/configs/vbvg.toml
@@ -6,3 +6,42 @@ name = "Verbandsverantwortlichkeitsgesetz"
name = "Abschnitt"
is_root = true
match_function = "contains"
+
+[[parser.replace_rules]]
+find = """180,–wenn die Tat mit lebenslanger oder Freiheitsstrafe bis zu zwanzig Jahren bedroht ist,155,–wenn die Tat mit Freiheitsstrafe bis zu fünfzehn Jahren bedroht ist,130,–wenn die Tat mit Freiheitsstrafe bis zu zehn Jahren bedroht ist,100,–wenn die Tat mit Freiheitsstrafe bis zu fünf Jahren bedroht ist,85,–wenn die Tat mit Freiheitsstrafe bis zu drei Jahren bedroht ist,70,–wenn die Tat mit Freiheitsstrafe bis zu zwei Jahren bedroht ist,55,–wenn die Tat mit Freiheitsstrafe bis zu einem Jahr bedroht ist,40–in allen übrigen Fällen."""
+replace_with = """\
+\
+\
+ \
+180, wenn die Tat mit lebenslanger oder Freiheitsstrafe bis zu zwanzig Jahren bedroht ist,\
+\
+\
+ \
+155, wenn die Tat mit Freiheitsstrafe bis zu fünfzehn Jahren bedroht ist,\
+\
+\
+ \
+130, wenn die Tat mit Freiheitsstrafe bis zu zehn Jahren bedroht ist,\
+\
+\
+ \
+100, wenn die Tat mit Freiheitsstrafe bis zu fünf Jahren bedroht ist,\
+\
+\
+ \
+85, wenn die Tat mit Freiheitsstrafe bis zu drei Jahren bedroht ist,\
+\
+\
+ \
+70, wenn die Tat mit Freiheitsstrafe bis zu zwei Jahren bedroht ist,\
+\
+\
+ \
+55, wenn die Tat mit Freiheitsstrafe bis zu einem Jahr bedroht ist,\
+\
+\
+ \
+40, in allen übrigen Fällen.\
+\
+\
+"""
diff --git a/data/expected/par/20004425 b/data/expected/par/20004425
index 9aec0b0..a05986c 100644
--- a/data/expected/par/20004425
+++ b/data/expected/par/20004425
@@ -9,7 +9,7 @@ New desc: Verbandsverantwortlichkeit – Materiellrechtliche Bestimmungen
New_new_para_header: Verantwortlichkeit
New_par: § 3.;{"List":[{"Multi":[{"Text":"(1) Ein Verband ist unter den weiteren Voraussetzungen des Abs. 2 oder des Abs. 3 für eine Straftat verantwortlich, wenn"},{"List":[{"Text":"1. die Tat zu seinen Gunsten begangen worden ist oder"},{"Text":"2. durch die Tat Pflichten verletzt worden sind, die den Verband treffen."}]}]},{"Text":"(2) Für Straftaten eines Entscheidungsträgers ist der Verband verantwortlich, wenn der Entscheidungsträger als solcher die Tat rechtswidrig und schuldhaft begangen hat."},{"Multi":[{"Text":"(3) Für Straftaten von Mitarbeitern ist der Verband verantwortlich, wenn"},{"List":[{"Text":"1. Mitarbeiter den Sachverhalt, der dem gesetzlichen Tatbild entspricht, rechtswidrig verwirklicht haben; der Verband ist für eine Straftat, die vorsätzliches Handeln voraussetzt, nur verantwortlich, wenn ein Mitarbeiter vorsätzlich gehandelt hat; für eine Straftat, die fahrlässiges Handeln voraussetzt, nur, wenn Mitarbeiter die nach den Umständen gebotene Sorgfalt außer acht gelassen haben; und"},{"Text":"2. die Begehung der Tat dadurch ermöglicht oder wesentlich erleichtert wurde, dass Entscheidungsträger die nach den Umständen gebotene und zumutbare Sorgfalt außer acht gelassen haben, insbesondere indem sie wesentliche technische, organisatorische oder personelle Maßnahmen zur Verhinderung solcher Taten unterlassen haben."}]}]},{"Text":"(4) Die Verantwortlichkeit eines Verbandes für eine Tat und die Strafbarkeit von Entscheidungsträgern oder Mitarbeitern wegen derselben Tat schließen einander nicht aus."}]}
New_new_para_header: Verbandsgeldbuße
-New_par: § 4.;{"List":[{"Text":"(1) Ist ein Verband für eine Straftat verantwortlich, so ist über ihn eine Verbandsgeldbuße zu verhängen."},{"Text":"(2) Die Verbandsgeldbuße ist in Tagessätzen zu bemessen. Sie beträgt mindestens einen Tagessatz."},{"Text":"(3) Die Anzahl der Tagessätze beträgt bis zu"},{"Multi":[{"Text":"180,"},{"List":[{"Text":"– wenn die Tat mit lebenslanger oder Freiheitsstrafe bis zu zwanzig Jahren bedroht ist,"}]}]},{"Multi":[{"Text":"155,"},{"List":[{"Text":"– wenn die Tat mit Freiheitsstrafe bis zu fünfzehn Jahren bedroht ist,"}]}]},{"Multi":[{"Text":"130,"},{"List":[{"Text":"– wenn die Tat mit Freiheitsstrafe bis zu zehn Jahren bedroht ist,"}]}]},{"Multi":[{"Text":"100,"},{"List":[{"Text":"– wenn die Tat mit Freiheitsstrafe bis zu fünf Jahren bedroht ist,"}]}]},{"Multi":[{"Text":"85,"},{"List":[{"Text":"– wenn die Tat mit Freiheitsstrafe bis zu drei Jahren bedroht ist,"}]}]},{"Multi":[{"Text":"70,"},{"List":[{"Text":"– wenn die Tat mit Freiheitsstrafe bis zu zwei Jahren bedroht ist,"}]}]},{"Multi":[{"Text":"55,"},{"List":[{"Text":"– wenn die Tat mit Freiheitsstrafe bis zu einem Jahr bedroht ist,"}]}]},{"Multi":[{"Text":"40"},{"List":[{"Text":"– in allen übrigen Fällen."}]}]},{"Text":"(4) Der Tagessatz ist nach der Ertragslage des Verbandes unter Berücksichtigung von dessen sonstiger wirtschaftlicher Leistungsfähigkeit zu bemessen. Er ist mit einem Betrag festzusetzen, der dem 360. Teil des Jahresertrages entspricht oder diesen um höchstens ein Drittel über- oder unterschreitet, mindestens jedoch mit 50 und höchstens mit 30 000 Euro. Dient der Verband gemeinnützigen, humanitären oder kirchlichen Zwecken (§§ 34 bis 47 der Bundesabgabenordnung, BGBl. Nr. 194/1961) oder ist er sonst nicht auf Gewinn gerichtet, so ist der Tagessatz mit mindestens 2 und höchstens 1 500 Euro festzusetzen."}]}
+New_par: § 4.;{"List":[{"Text":"(1) Ist ein Verband für eine Straftat verantwortlich, so ist über ihn eine Verbandsgeldbuße zu verhängen."},{"Text":"(2) Die Verbandsgeldbuße ist in Tagessätzen zu bemessen. Sie beträgt mindestens einen Tagessatz."},{"Multi":[{"Text":"(3) Die Anzahl der Tagessätze beträgt bis zu"},{"List":[{"Text":" 180, wenn die Tat mit lebenslanger oder Freiheitsstrafe bis zu zwanzig Jahren bedroht ist,"},{"Text":" 155, wenn die Tat mit Freiheitsstrafe bis zu fünfzehn Jahren bedroht ist,"},{"Text":" 130, wenn die Tat mit Freiheitsstrafe bis zu zehn Jahren bedroht ist,"},{"Text":" 100, wenn die Tat mit Freiheitsstrafe bis zu fünf Jahren bedroht ist,"},{"Text":" 85, wenn die Tat mit Freiheitsstrafe bis zu drei Jahren bedroht ist,"},{"Text":" 70, wenn die Tat mit Freiheitsstrafe bis zu zwei Jahren bedroht ist,"},{"Text":" 55, wenn die Tat mit Freiheitsstrafe bis zu einem Jahr bedroht ist,"},{"Text":" 40, in allen übrigen Fällen."}]}]},{"Text":"(4) Der Tagessatz ist nach der Ertragslage des Verbandes unter Berücksichtigung von dessen sonstiger wirtschaftlicher Leistungsfähigkeit zu bemessen. Er ist mit einem Betrag festzusetzen, der dem 360. Teil des Jahresertrages entspricht oder diesen um höchstens ein Drittel über- oder unterschreitet, mindestens jedoch mit 50 und höchstens mit 30 000 Euro. Dient der Verband gemeinnützigen, humanitären oder kirchlichen Zwecken (§§ 34 bis 47 der Bundesabgabenordnung, BGBl. Nr. 194/1961) oder ist er sonst nicht auf Gewinn gerichtet, so ist der Tagessatz mit mindestens 2 und höchstens 1 500 Euro festzusetzen."}]}
New_new_para_header: Bemessung der Verbandsgeldbuße
New_par: § 5.;{"List":[{"Text":"(1). Bei der Bemessung der Anzahl der Tagessätze hat das Gericht Erschwerungs- und Milderungsgründe, soweit sie nicht schon die Höhe der angedrohten Geldbuße bestimmen, gegeneinander abzuwägen."},{"Multi":[{"Text":"(2) Die Anzahl ist insbesondere umso höher zu bemessen,"},{"List":[{"Text":"1. je größer die Schädigung oder Gefährdung ist, für die der Verband verantwortlich ist;"},{"Text":"2. je höher der aus der Straftat vom Verband erlangte Vorteil ist;"},{"Text":"3. je mehr gesetzwidriges Verhalten von Mitarbeitern geduldet oder begünstigt wurde."}]}]},{"Multi":[{"Text":"(3) Die Anzahl ist insbesondere geringer zu bemessen, wenn"},{"List":[{"Text":"1. der Verband schon vor der Tat Vorkehrungen zur Verhinderung solcher Taten getroffen oder Mitarbeiter zu rechtstreuem Verhalten angehalten hat;"},{"Text":"2. der Verband lediglich für Straftaten von Mitarbeitern verantwortlich ist (§ 3 Abs. 3);"},{"Text":"3. er nach der Tat erheblich zur Wahrheitsfindung beigetragen hat;"},{"Text":"4. er die Folgen der Tat gutgemacht hat;"},{"Text":"5. er wesentliche Schritte zur zukünftigen Verhinderung ähnlicher Taten unternommen hat;"},{"Text":"6. die Tat bereits gewichtige rechtliche Nachteile für den Verband oder seine Eigentümer nach sich gezogen hat."}]}]}]}
New_new_para_header: Bedingte Nachsicht der Verbandsgeldbuße
diff --git a/src/paragraph/parser/absatz.rs b/src/paragraph/parser/absatz.rs
index f2fcff9..322b245 100644
--- a/src/paragraph/parser/absatz.rs
+++ b/src/paragraph/parser/absatz.rs
@@ -16,6 +16,7 @@
use std::iter::Peekable;
+use log::trace;
use roxmltree::{Children, Node};
use crate::law::Content;
@@ -39,6 +40,7 @@ impl Absatz {
// - String: (optional) paragraph id
// - Content: content of the paragraph
pub(crate) fn parse_full(c: &mut Peekable) -> (Option, Content) {
+ trace!("Parsing absatz...");
let absatz = AbsatzAbs::parse(c.next().unwrap());
let par_id = absatz.gldsym;
@@ -48,6 +50,7 @@ impl Absatz {
// If there's a "liste" after an "absatz", the "liste" should be part of the "absatz"
while let Some(child) = c.peek() {
if Liste::test(child) {
+ trace!("Found liste inside absatz, parsing...");
let liste = Liste::parse_full(c).content;
content.extend(liste);
} else if Table::test(child) {
diff --git a/src/paragraph/parser/abschnitt.rs b/src/paragraph/parser/abschnitt.rs
index 3bdc740..0a58746 100644
--- a/src/paragraph/parser/abschnitt.rs
+++ b/src/paragraph/parser/abschnitt.rs
@@ -17,7 +17,7 @@
use std::collections::HashMap;
use std::iter::Peekable;
-use log::trace;
+use log::{debug, trace};
use roxmltree::{Children, Node};
use crate::law::LawBuilder;
@@ -73,6 +73,7 @@ impl Abschnitt {
builder.new_par(par_id, Content::List(contents));
}
+ debug!("Handling post metadata");
ret.handle_metadata(&mut c, builder);
// Skip all UeberschriftTitle and Absatz
diff --git a/src/paragraph/parser/liste.rs b/src/paragraph/parser/liste.rs
index 86e2c30..e22471b 100644
--- a/src/paragraph/parser/liste.rs
+++ b/src/paragraph/parser/liste.rs
@@ -44,12 +44,17 @@ impl Liste {
// Parse stuff inside
while let Some(child) = c.peek() {
if Ziffernliste::test(child) {
+ trace!("Found Ziffernliste in liste, parsing...");
let liste = Ziffernliste::parse(&mut c);
content.push(liste.get_content());
} else if Schlussteil::test(child) {
// 162 Schifffahrtsgesetz show use that a 'schlussteil' can be at the start of a list
content.push(Content::Text(Schlussteil::parse(c.next().unwrap()).content));
} else {
+ trace!(
+ "No more acceptable element in the list found: '{}'",
+ child.tag_name().name()
+ );
break;
}
}