add draft of structs of laws
This commit is contained in:
parent
9206714c0c
commit
e1ece5b986
66
src/law.rs
Normal file
66
src/law.rs
Normal file
@ -0,0 +1,66 @@
|
||||
struct Law {
|
||||
name: String, //ABGB, UrhG
|
||||
section: Vec<Section>, // § 1, § 2, ...
|
||||
}
|
||||
|
||||
impl Law {
|
||||
fn new(name: &str) -> Self {
|
||||
Self {
|
||||
name: name.into(),
|
||||
section: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
fn get_classifiers(&self) -> Vec<Classifier> {
|
||||
let mut ret = Vec::new();
|
||||
for sec in &self.section {
|
||||
if let Some(header) = &sec.header {
|
||||
for class in header.get_all_classifiers() {
|
||||
ret.push(class);
|
||||
}
|
||||
}
|
||||
}
|
||||
ret
|
||||
}
|
||||
|
||||
fn new_header(&self, name: &str) {
|
||||
//TODO: continue here
|
||||
}
|
||||
}
|
||||
|
||||
struct Section {
|
||||
symb: String, // §"1", §"2", ...
|
||||
content: Content,
|
||||
header: Option<Header>,
|
||||
}
|
||||
|
||||
struct Header {
|
||||
classifier: Classifier, // Hauptstück, Theil, Abschnitt, ol
|
||||
name: String, // 1. Hauptstück, 3. Theil, 7. Abschnitt, li
|
||||
parent: Option<Box<Header>>,
|
||||
}
|
||||
|
||||
impl Header {
|
||||
fn get_all_classifiers(&self) -> Vec<Classifier> {
|
||||
let mut ret = Vec::new();
|
||||
ret.push(self.classifier.clone());
|
||||
if let Some(parent) = &self.parent {
|
||||
for a in parent.get_all_classifiers() {
|
||||
ret.push(a);
|
||||
}
|
||||
}
|
||||
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct Classifier {
|
||||
name: String, // Hauptstück, Theil, Abschnitt, ol
|
||||
}
|
||||
|
||||
enum Content {
|
||||
Text(String), //This is my direct law text
|
||||
Item((String, Box<Content>)), //(1) This is general law. (2) This is more specific law
|
||||
List(Vec<Box<Content>>), //1. my first item
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
use std::io;
|
||||
|
||||
mod law;
|
||||
mod overview;
|
||||
mod par;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user