push
This commit is contained in:
@ -2,7 +2,10 @@ use std::fmt::Display;
|
||||
|
||||
use roxmltree::Node;
|
||||
|
||||
use crate::{law::LawBuilder, Error};
|
||||
use crate::{
|
||||
law::{Content, LawBuilder},
|
||||
Error,
|
||||
};
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub(crate) struct Risdok {
|
||||
@ -38,9 +41,6 @@ impl Risdok {
|
||||
|
||||
impl Display for Risdok {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
if let Some(par_header) = &self.nutzdaten.abschnitt.ueberschriftPara {
|
||||
f.write_str(&format!("# {}", par_header.content))?;
|
||||
}
|
||||
for abs in &self.nutzdaten.abschnitt.absatze {
|
||||
let mut w = String::new();
|
||||
if let Some(symb) = &abs.gldsym {
|
||||
@ -86,7 +86,6 @@ impl Nutzdaten {
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub(crate) struct Abschnitt {
|
||||
ueberschriftPara: Option<Ueberschrift>,
|
||||
absatze: Vec<AbsatzAbs>,
|
||||
}
|
||||
impl Abschnitt {
|
||||
@ -138,10 +137,10 @@ impl Abschnitt {
|
||||
}
|
||||
}
|
||||
|
||||
let mut ueberschriftPara = None;
|
||||
if let Some(child) = c.peek() {
|
||||
if Ueberschrift::test(child, "para") {
|
||||
ueberschriftPara = Some(Ueberschrift::parse(c.next().unwrap(), "para"))
|
||||
builder
|
||||
.new_next_para_header(&Ueberschrift::parse(c.next().unwrap(), "para").content);
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,6 +158,25 @@ impl Abschnitt {
|
||||
}
|
||||
}
|
||||
|
||||
if absatze.len() == 1 {
|
||||
builder.new_par(Content::Text(format!(
|
||||
"{} {}",
|
||||
absatze[0].gldsym.clone().unwrap(),
|
||||
absatze[0].content
|
||||
)));
|
||||
} else {
|
||||
let mut content = Vec::new();
|
||||
for a in &absatze {
|
||||
let mut txt = String::new();
|
||||
if let Some(sym) = &a.gldsym {
|
||||
txt.push_str(&format!("{sym} "));
|
||||
}
|
||||
txt.push_str(&a.content);
|
||||
content.push(Box::new(Content::Text(txt)));
|
||||
}
|
||||
builder.new_par(Content::Item(content));
|
||||
}
|
||||
|
||||
// Skip all UeberschriftTitle and Absatz
|
||||
loop {
|
||||
match c.peek() {
|
||||
@ -179,10 +197,7 @@ impl Abschnitt {
|
||||
|
||||
assert_eq!(c.next(), None);
|
||||
|
||||
Self {
|
||||
ueberschriftPara,
|
||||
absatze,
|
||||
}
|
||||
Self { absatze }
|
||||
}
|
||||
}
|
||||
|
||||
@ -335,10 +350,6 @@ mod tests {
|
||||
|
||||
let abschnitt = risdok.unwrap().nutzdaten.abschnitt;
|
||||
|
||||
assert_eq!(
|
||||
abschnitt.ueberschriftPara.unwrap().content,
|
||||
"Nichtigkeit eines wucherischen Vertrages."
|
||||
);
|
||||
let expected = vec![
|
||||
AbsatzAbs {
|
||||
gldsym: Some("§ 1.".into()),
|
||||
@ -363,10 +374,6 @@ mod tests {
|
||||
|
||||
let abschnitt = risdok.unwrap().nutzdaten.abschnitt;
|
||||
|
||||
assert_eq!(
|
||||
abschnitt.ueberschriftPara.unwrap().content,
|
||||
"Rechtsfolgen der Nichtigkeit eines wucherischen Vertrages."
|
||||
);
|
||||
let expected = vec![
|
||||
AbsatzAbs {
|
||||
gldsym: Some("§ 7.".into()),
|
||||
|
Reference in New Issue
Block a user