summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorCara Salter <cara@devcara.com>2021-12-19 12:48:36 -0500
committerCara Salter <cara@devcara.com>2021-12-19 12:48:36 -0500
commitc4d7f8f50d53057005d6bb28ac487f69ea45bd5e (patch)
tree34968e205ebbb97264a2df4e8951af5a01db22cb /src/internal
parentef01d3badb9765271a5bf55a4f0702b68f099e2e (diff)
downloadsite-c4d7f8f50d53057005d6bb28ac487f69ea45bd5e.tar.gz
site-c4d7f8f50d53057005d6bb28ac487f69ea45bd5e.zip
Add blog post parsing and templates
templates WIP, not building properly
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/markdown.rs21
-rw-r--r--src/internal/mod.rs16
2 files changed, 37 insertions, 0 deletions
diff --git a/src/internal/markdown.rs b/src/internal/markdown.rs
new file mode 100644
index 0000000..9798876
--- /dev/null
+++ b/src/internal/markdown.rs
@@ -0,0 +1,21 @@
+use color_eyre::{Result, eyre::Context};
+use comrak::{ComrakOptions, Arena, parse_document, format_html};
+
+
+pub fn render(inp: &str) -> Result<String> {
+ let mut options = ComrakOptions::default();
+ options.extension.autolink = true;
+ options.extension.table = true;
+ options.extension.superscript = true;
+ options.extension.footnotes = true;
+
+ options.render.unsafe_ = true;
+
+ let arena = Arena::new();
+ let root = parse_document(&arena, inp, &options);
+
+ let mut html = vec![];
+ format_html(root, &options, &mut html).unwrap();
+
+ String::from_utf8(html).wrap_err("this is somehow not UTF-8")
+}
diff --git a/src/internal/mod.rs b/src/internal/mod.rs
new file mode 100644
index 0000000..f924c50
--- /dev/null
+++ b/src/internal/mod.rs
@@ -0,0 +1,16 @@
+use color_eyre::eyre::Result;
+use crate::blog::post::Post;
+
+pub mod markdown;
+
+pub struct SiteState {
+ pub blog: Vec<Post>,
+}
+
+pub async fn init() -> Result<SiteState> {
+ let blog = crate::blog::post::load("blog").await?;
+
+ Ok(SiteState {
+ blog,
+ })
+}