From 037e8fba6c14a6f58e1cb2dd2dca0dade0c5f715 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 18 Aug 2021 17:58:27 +0200 Subject: [PATCH] base commit --- .editorconfig | 9 + .gitignore | 3 + .logo.png | Bin 0 -> 14526 bytes Cargo.toml | 10 + LICENSE | 524 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 7 + src/bin/blep.rs | 15 ++ src/lib.rs | 1 + src/page.rs | 36 ++++ 9 files changed, 605 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .logo.png create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 src/bin/blep.rs create mode 100644 src/lib.rs create mode 100644 src/page.rs diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..78c766e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = tab +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..79f5db6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea/ +target/ +Cargo.lock diff --git a/.logo.png b/.logo.png new file mode 100644 index 0000000000000000000000000000000000000000..821b17a0630a570cb0a27e5219407f39d272945a GIT binary patch literal 14526 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 ceSc`Er@Q_GGH(~+fBq panic!("Unknown file at {}", path.to_string_lossy()), + Page::Basic { path, meta } + => println!("Page title: {}", meta.title) + } + } +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..79d2861 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1 @@ +pub mod page; diff --git a/src/page.rs b/src/page.rs new file mode 100644 index 0000000..36858b8 --- /dev/null +++ b/src/page.rs @@ -0,0 +1,36 @@ +use std::path::PathBuf; +use extract_frontmatter::Extractor; + +pub struct DocumentInfo { + pub title: String, + pub content: String, +} + +pub enum Page { + Basic { path: PathBuf, meta: DocumentInfo }, + Unknown { path: PathBuf }, +} + +pub fn load_page(path: PathBuf) -> Option { + if !path.exists() || !path.is_file() { + return None; + } + + if let Some(ext) = path.extension() { + if ["md", "gmi"].contains(&ext.to_string_lossy().as_ref()) { + return Some(Page::Basic { + path, + meta: DocumentInfo { + title: String::from("Meow"), + content: String::from(""), + }, + }); + } + } + + Some(Page::Unknown { path }) +} + +pub fn load_document_info(path: &PathBuf) -> Option { + let mut extractor = Extractor::new(path.re) +}