From 13cb719b87bcef41c4dd398f5a651ddb2b561e0d Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Sun, 21 Apr 2024 13:57:03 +1200 Subject: Completely rewrite the library --- src/lib.rs | 44 ++++++++++++-------------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index c0b8c84..c70ce77 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,33 +1,13 @@ -#![feature(iter_zip)] - -mod block; -mod parse; -mod parse_heirarchical; -mod table; -mod text; - -pub use block::Block; -pub use parse::parse; -pub use parse_heirarchical::parse_heirarchical; -pub use table::{Alignment, Column, Table}; -pub use text::{Hyperlink, Text}; - -pub type Line = Vec; - -pub fn line_to_string(line: &[Text]) -> String { - let mut output = String::new(); - for text in line { - match text { - Text::Normal(content) => output.push_str(&content), - Text::Bold(content) => output.push_str(&format!("**{}**", content)), - Text::Italic(content) => output.push_str(&format!("_{}_", content)), - Text::BoldItalic(content) => output.push_str(&format!("**_{}_**", content)), - Text::Code(content) => output.push_str(&format!("`{}`", content)), - Text::WikiLink(content) => output.push_str(&format!("[[{}]]", content)), - Text::Hyperlink(Hyperlink { label, target }) => { - output.push_str(&format!("[{}]({})", label, target)) - } - } - } - return output; +mod document; +mod elements; + +pub use document::*; +pub use elements::*; + +pub(crate) fn is_whitespace(c: &char) -> bool { + c.is_whitespace() || r#".,'"“”_:;-/\()[]{}?"#.contains(*c) } +pub(crate) fn is_contentful(s:&str, non_content_chars: &[char]) -> bool { + s.chars().any(|c| !non_content_chars.contains(&c)) + && s.chars().nth(0).map(|c| !non_content_chars.contains(&c)).unwrap_or(false) + && s.chars().last().map(|c| !non_content_chars.contains(&c)).unwrap_or(false) } -- cgit v1.2.3-70-g09d2