first part of FSG
This commit is contained in:
parent
ccefe73206
commit
8faf69b76f
43
src/law.rs
43
src/law.rs
@ -116,6 +116,16 @@ fn starts_with_number(_classifier_name: &str, instance_name: &str) -> bool {
|
||||
matches!(instance_name.trim().as_bytes().first(), Some(c) if c.is_ascii_digit())
|
||||
}
|
||||
|
||||
fn starts_with_letter(_classifier_name: &str, instance_name: &str) -> bool {
|
||||
instance_name.starts_with(|c: char| c.is_ascii_lowercase())
|
||||
&& (instance_name.chars().nth(1) == Some('.') || instance_name.chars().nth(1) == Some(')'))
|
||||
}
|
||||
|
||||
fn starts_with_uppercaseletter(_classifier_name: &str, instance_name: &str) -> bool {
|
||||
instance_name.starts_with(|c: char| c.is_ascii_uppercase())
|
||||
&& (instance_name.chars().nth(1) == Some('.') || instance_name.chars().nth(1) == Some(')'))
|
||||
}
|
||||
|
||||
/// Is used to generate a law struct. It's organized mainly by classifier.
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub(crate) struct LawBuilder {
|
||||
@ -186,6 +196,7 @@ impl LawBuilder {
|
||||
let mut law_id = None;
|
||||
if name == "UrhG" {
|
||||
law_id = Some(10001848);
|
||||
|
||||
let hauptstueck = Classifier::new("Hauptstück", Arc::new(&contains));
|
||||
classifiers.push(hauptstueck.clone());
|
||||
|
||||
@ -207,6 +218,38 @@ impl LawBuilder {
|
||||
Classifier::new("Numbered Header", Arc::new(&starts_with_number));
|
||||
numbered_header.set_parent(0);
|
||||
classifiers.push(numbered_header);
|
||||
} else if name == "FSG" {
|
||||
law_id = Some(10003898);
|
||||
|
||||
let artikel = Classifier::new("Artikel", Arc::new(&contains));
|
||||
classifiers.push(artikel);
|
||||
|
||||
let mut abschnitt = Classifier::new(" Abschnitt", Arc::new(&contains));
|
||||
abschnitt.set_parent(0);
|
||||
classifiers.push(abschnitt);
|
||||
|
||||
let mut unterabschnitt = Classifier::new("Unterabschnitt", Arc::new(&contains));
|
||||
unterabschnitt.set_parent(1);
|
||||
classifiers.push(unterabschnitt);
|
||||
|
||||
let mut hauptstueck = Classifier::new("Hauptstück", Arc::new(&contains));
|
||||
hauptstueck.set_parent(9999);
|
||||
classifiers.push(hauptstueck);
|
||||
|
||||
let mut numbered_header =
|
||||
Classifier::new("Numbered Header", Arc::new(&starts_with_letter));
|
||||
numbered_header.set_parent(9999);
|
||||
classifiers.push(numbered_header);
|
||||
|
||||
let mut uppercase_headers =
|
||||
Classifier::new("Numbered Header", Arc::new(&starts_with_uppercaseletter));
|
||||
uppercase_headers.set_parent(9999);
|
||||
classifiers.push(uppercase_headers);
|
||||
|
||||
let mut number_header =
|
||||
Classifier::new("Numbered Header", Arc::new(&starts_with_number));
|
||||
number_header.set_parent(9999);
|
||||
classifiers.push(number_header);
|
||||
}
|
||||
|
||||
let mut builder = Self {
|
||||
|
@ -42,7 +42,7 @@ impl From<roxmltree::Error> for Error {
|
||||
|
||||
fn main() {
|
||||
env_logger::init();
|
||||
let law = LawBuilder::new("MSchG");
|
||||
let law = LawBuilder::new("FSG");
|
||||
|
||||
law.to_md();
|
||||
//println!("{:#?}", builder.toc());
|
||||
|
@ -40,6 +40,12 @@ pub(crate) fn parse_from_str(xml: &str, builder: &mut LawBuilder) -> Result<bool
|
||||
let xml = xml.replace("<i>", ""); // § 69 in MSchG
|
||||
let xml = xml.replace("</i>", "");
|
||||
|
||||
let xml = xml.replace("<n>", ""); // § 49b in FSG
|
||||
let xml = xml.replace("</n>", "");
|
||||
|
||||
let xml = xml.replace("<b>", ""); // § 14 in FSG
|
||||
let xml = xml.replace("</b>", "");
|
||||
|
||||
// Artikel 18 UrhG
|
||||
let xml = xml.replace("<n><i>", "");
|
||||
let xml = xml.replace("</i></n>", "");
|
||||
@ -49,6 +55,30 @@ pub(crate) fn parse_from_str(xml: &str, builder: &mut LawBuilder) -> Result<bool
|
||||
r#"<gldsym>§ 69.</gldsym>(Anm.: § 69 aufgehoben durch Art. 1 Z 12, BGBl. I Nr. 124/2017)"#,
|
||||
);
|
||||
|
||||
// § 49d FSG
|
||||
let xml = xml.replace(
|
||||
r#"</absatz><liste><schlussteil ebene="0" art="normal" ct="text">Die Finanzordnungswidrigkeit wird mit einer Geldstrafe bis zu 50 000 Euro geahndet.</schlussteil></liste>"#,
|
||||
r#"Die Finanzordnungswidrigkeit wird mit einer Geldstrafe bis zu 50 000 Euro geahndet.</absatz>"#,
|
||||
);
|
||||
|
||||
// § 127 FSG
|
||||
let xml = xml.replace(
|
||||
r#"<absatz typ="erltext" ct="text" halign="j">Die Öffentlichkeit ist auszuschließen:</absatz>"#,
|
||||
r#"<absatz typ="abs" ct="text" halign="j">Die Öffentlichkeit ist auszuschließen:</absatz>"#,
|
||||
);
|
||||
|
||||
// § 56 FSG
|
||||
let xml = xml.replace(
|
||||
r#"<ueberschrift typ="g2" ct="text" halign="c">A. Allgemeine Bestimmungen</ueberschrift>"#,
|
||||
r#"<ueberschrift typ="g1" ct="text" halign="c">A. Allgemeine Bestimmungen</ueberschrift>"#,
|
||||
);
|
||||
|
||||
// § 167 FSG
|
||||
let xml = xml.replace(
|
||||
r#"<absatz typ="abs" ct="text" halign="j">(1) Gegen die Versäumung einer Frist oder einer mündlichen Verhandlung ist auf Antrag des Beschuldigten oder der Nebenbeteiligten eines anhängigen oder abgeschlossenen Finanzstrafverfahrens die Wiedereinsetzung in den vorigen Stand zu bewilligen, wenn der Antragsteller durch die Versäumung einen Rechtsnachteil erleidet und glaubhaft macht, daß er durch ein unvorhergesehenes oder unabwendbares Ereignis verhindert war, die Frist einzuhalten oder zur Verhandlung zu erscheinen. Daß dem Beschuldigten oder dem Nebenbeteiligten ein Verschulden an der Versäumung zur Last liegt, hindert die Bewilligung der Wiedereinsetzung nicht, wenn es sich nur um einen minderen Grad des Versehens handelt.</absatz>"#,
|
||||
r#"<absatz typ="abs" ct="text" halign="j"><gldsym>§ 167.</gldsym>(1) Gegen die Versäumung einer Frist oder einer mündlichen Verhandlung ist auf Antrag des Beschuldigten oder der Nebenbeteiligten eines anhängigen oder abgeschlossenen Finanzstrafverfahrens die Wiedereinsetzung in den vorigen Stand zu bewilligen, wenn der Antragsteller durch die Versäumung einen Rechtsnachteil erleidet und glaubhaft macht, daß er durch ein unvorhergesehenes oder unabwendbares Ereignis verhindert war, die Frist einzuhalten oder zur Verhandlung zu erscheinen. Daß dem Beschuldigten oder dem Nebenbeteiligten ein Verschulden an der Versäumung zur Last liegt, hindert die Bewilligung der Wiedereinsetzung nicht, wenn es sich nur um einen minderen Grad des Versehens handelt.</absatz>"#,
|
||||
);
|
||||
|
||||
debug!("{xml}");
|
||||
|
||||
let continue_parsing = Risdok::from_str(&xml, builder)?;
|
||||
|
@ -258,7 +258,8 @@ pub(crate) struct Ziffernliste {
|
||||
}
|
||||
impl Ziffernliste {
|
||||
pub(crate) fn test(n: &Node) -> bool {
|
||||
["ziffernliste", "aufzaehlung", "literaliste"].contains(&n.tag_name().name())
|
||||
// strichliste -> § 194b FSG
|
||||
["ziffernliste", "aufzaehlung", "literaliste", "strichliste"].contains(&n.tag_name().name())
|
||||
}
|
||||
|
||||
pub(crate) fn parse(n: Node) -> Self {
|
||||
|
Loading…
Reference in New Issue
Block a user