diff options
Diffstat (limited to 'src/new/mod.rs')
-rw-r--r-- | src/new/mod.rs | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/new/mod.rs b/src/new/mod.rs new file mode 100644 index 0000000..efc55cd --- /dev/null +++ b/src/new/mod.rs @@ -0,0 +1,99 @@ +pub mod chapter; +pub mod project; +pub mod section; + +use std::{ + env, + ffi::OsString, + fs::read_dir, + io::{self, ErrorKind}, + path::PathBuf, +}; + +const SECTION: &'static str = r#"%! TEX root = ../../../main.tex +% LTeX: language=de-DE + +\lesson{REPLACMENT_SECTION_TITLE}{DATE}{} +Dies ist etwas Text +"#; + +const CHAPTER: &'static str = r#"%! TEX root = ../main.tex +% LTeX: language=de-DE + +\chapter{REPLACEMENT_CHAPTER} +"#; + +const TITLE_FILE: &'static str = r#"% LTeX: language=de-DE + +\maketitle +\tableofcontents +\vspace*{\fill} +\makeatletter +Copyright \textcopyright{} \@authors{} \@years{}\\ +\ \\ +Dieses Werk ist lizenziert unter den Bedingungen der CC BY-SA 4.0. +Der Lizenztext ist online unter \url{http://creativecommons.org/licenses/by-sa/4.0/legalcode} abrufbar. +\makeatother +\clearpage +"#; + +const MAIN_FILE: &'static str = r#"%\documentclass[a4paper, 12pt, nosolutions]{report} +\documentclass[a4paper, 12pt]{report} +% LTeX: language=de-DE +\input{headers/preamble.tex} +\input{headers/preamble_local.tex} + + +\title{\textbf{Titel}} +\author{Name\thanks{Beispiel}} +\authors{Name} +\years{2022 - 2023} +\date{\DTMDate{2002-12-4}} + +\includeonly{content/REPLACEMENT_CHAPTER/chapter_01} + +\begin{document} + \input{content/static/title} + + \include{content/REPLACEMENT_CHAPTER/chapter_01} + % NEXT_CHAPTER + + \printbibliography\relax +\end{document} +"#; + + + +pub fn get_project_root() -> io::Result<PathBuf> { + let path = env::current_dir()?; + let mut path_ancestors = path.as_path().ancestors(); + + while let Some(path_segment) = path_ancestors.next() { + if read_dir(path_segment)?.into_iter().any(|path_segment| { + path_segment + .expect("The read_dir shouldn't error out here") + .file_name() + == OsString::from("lpm.toml") + }) { + return Ok(PathBuf::from(path_segment)); + } + } + Err(io::Error::new( + ErrorKind::NotFound, + "Ran out of places to find lpm.toml", + )) +} + +pub fn get_all_chapters() -> io::Result<Vec<String>> { + let path = get_project_root()?; + let output = read_dir(path.join("content"))? + .map(|path| { + path.expect("The values sholud be fine") + .file_name() + .to_str() + .expect("all names should be valid utf-8") + .to_owned() + }) + .collect(); + Ok(output) +} |