about summary refs log tree commit diff
path: root/markup/src
diff options
context:
space:
mode:
authorgennyble <gen@nyble.dev>2026-10-01 00:38:50 -0500
committergennyble <gen@nyble.dev>2026-10-01 00:38:50 -0500
commit19a61236c3c94e66731bf30853156770ab39f2a3 (patch)
treed12e57829955d08786f273c4d8d7481694bef2a4 /markup/src
parent980363bb80fb5384ccb431e25132906954a75ae1 (diff)
add horizontal lines
Diffstat (limited to 'markup/src')
-rw-r--r--markup/src/breakdown.rs17
-rw-r--r--markup/src/lineup/mod.rs2
2 files changed, 18 insertions, 1 deletions
diff --git a/markup/src/breakdown.rs b/markup/src/breakdown.rs
index 8e32408..f110bb0 100644
--- a/markup/src/breakdown.rs
+++ b/markup/src/breakdown.rs
@@ -24,6 +24,7 @@ fn process<'raw>(raw: &'raw str) -> Document<'raw> {
 			Token::Blank => (),
 			Token::Header { level, text } => blocks.push(Block::header(level, text)),
 			Token::Escaped { text } => blocks.push(Block::Paragraph(text)),
+			Token::HorizontalLine => blocks.push(Block::HorizontalLine),
 			Token::ListItem { text } => {
 				let mut mur = map_until(&curr[1..], extract_listitem);
 				mur.items.insert(0, text);
@@ -145,6 +146,7 @@ enum Token<'raw> {
 	Escaped { text: &'raw str },
 	Header { level: u8, text: &'raw str },
 	CodeFence { lang: Option<&'raw str> },
+	HorizontalLine,
 	ListItem { text: &'raw str },
 }
 
@@ -182,6 +184,11 @@ impl<'raw> Token<'raw> {
 			};
 		}
 
+		if working.trim_end().eq("---") {
+			maybe_escaped!();
+			return Token::HorizontalLine;
+		}
+
 		if let Some(stripped) = working.strip_prefix('-') {
 			maybe_escaped!();
 			return Token::ListItem { text: stripped };
@@ -312,6 +319,7 @@ pub enum Block<'raw> {
 		text: &'raw str,
 	},
 	Paragraph(&'raw str),
+	HorizontalLine,
 	List {
 		items: Vec<&'raw str>,
 	},
@@ -395,6 +403,15 @@ mod test {
 	}
 
 	#[test]
+	pub fn horizontal_line() {
+		let raw = "---";
+		let actual = process(raw);
+		let expected = doc!(1 Block::HorizontalLine);
+
+		assert_eq!(actual, expected)
+	}
+
+	#[test]
 	pub fn list_item() {
 		let raw = "- list item";
 		let actual = process(raw);
diff --git a/markup/src/lineup/mod.rs b/markup/src/lineup/mod.rs
index 2f7ebff..8a3713e 100644
--- a/markup/src/lineup/mod.rs
+++ b/markup/src/lineup/mod.rs
@@ -767,7 +767,7 @@ mod test {
 		let expected = "<i>italics <b>bold</b> after</i>";
 		let rcsolve = Rc::new(EchoInterlinkSolver);
 		let doc = process(raw, rcsolve);
-		let html = doc.html();
+		let html = doc.into_html();
 
 		assert_eq!(html, expected)
 	}