diff --git a/src/database/entities/microservice/january.rs b/src/database/entities/microservice/january.rs index c52d36fc1b1b596b703dd2a2b5ec95288d4ebe08..5eee2b56636c46d1a8f0d58edbae8ec802cde52d 100644 --- a/src/database/entities/microservice/january.rs +++ b/src/database/entities/microservice/january.rs @@ -4,6 +4,7 @@ use crate::util::{ }; use linkify::{LinkFinder, LinkKind}; use serde::{Deserialize, Serialize}; +use regex::Regex; #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ImageSize { @@ -97,10 +98,17 @@ pub enum Embed { impl Embed { pub async fn generate(content: String) -> Result<Vec<Embed>> { + lazy_static! { + static ref RE_CODE: Regex = Regex::new("```(?:.|\n)+?```|`(?:.|\n)+?`").unwrap(); + } + + // Ignore code blocks. + let content = RE_CODE.replace_all(&content, ""); + let content = content + // Ignore quoted lines. .split("\n") .map(|v| { - // Ignore quoted lines. if let Some(c) = v.chars().next() { if c == '>' { return "";