From 6a086d57de81f97cc4d7d68a6d504fed32efdcc2 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 23 Dec 2023 20:55:32 -0500 Subject: [PATCH] Generate Post link when the protocol is post. --- src/intermediate/regular_link.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/intermediate/regular_link.rs b/src/intermediate/regular_link.rs index bd86a2d..7fb3d5a 100644 --- a/src/intermediate/regular_link.rs +++ b/src/intermediate/regular_link.rs @@ -41,14 +41,24 @@ intermediate!( #[derive(Debug, Clone)] pub(crate) enum LinkTarget { Raw(String), - Post { post_id: String }, + Post { post_id: Option }, } impl LinkTarget { pub(crate) fn from_string>(input: S) -> Result { fn impl_from_string(input: &str) -> Result { let parsed = Url::parse(input)?; - Ok(LinkTarget::Raw(input.to_owned())) + match parsed.scheme() { + "post" => { + let post_id = parsed + .path_segments() + .ok_or_else(|| "cannot be base")? + .next() + .map(str::to_owned); + Ok(LinkTarget::Post { post_id }) + } + _ => Ok(LinkTarget::Raw(input.to_owned())), + } } impl_from_string(input.as_ref()) }