diff options
| author | sigoden <sigoden@gmail.com> | 2024-05-09 22:59:06 +0000 |
|---|---|---|
| committer | sigoden <sigoden@gmail.com> | 2024-05-09 22:59:06 +0000 |
| commit | 058299e500af86adbc065eced542e108ae325458 (patch) | |
| tree | 0fd315aec554679d90670510d109c5d47eb1b3a3 /src/render/markdown.rs | |
| parent | e2675d6b0969bb6333f0fc9c23dc5e3327cff2eb (diff) | |
| download | aichat-058299e500af86adbc065eced542e108ae325458.tar.gz | |
refactor: refine detect code block
Diffstat (limited to 'src/render/markdown.rs')
| -rw-r--r-- | src/render/markdown.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/render/markdown.rs b/src/render/markdown.rs index 3f68ea2..400cfe2 100644 --- a/src/render/markdown.rs +++ b/src/render/markdown.rs @@ -280,13 +280,14 @@ fn blend_fg_color(fg: SyntectColor, bg: SyntectColor) -> SyntectColor { } fn detect_code_block(line: &str) -> Option<String> { + let line = line.trim_start(); if !line.starts_with("```") { return None; } let lang = line .chars() .skip(3) - .take_while(|v| v.is_alphanumeric()) + .take_while(|v| !v.is_whitespace()) .collect(); Some(lang) } @@ -380,4 +381,13 @@ std::error::Error>> { let output = render.render(TEXT); assert_eq!(TEXT_WRAP_ALL, output); } + + #[test] + fn test_detect_code_block() { + assert_eq!(detect_code_block("```rust"), Some("rust".into())); + assert_eq!(detect_code_block("```c++"), Some("c++".into())); + assert_eq!(detect_code_block(" ```rust"), Some("rust".into())); + assert_eq!(detect_code_block("```"), Some("".into())); + assert_eq!(detect_code_block("``rust"), None); + } } |
