diff options
| author | Fuwn <[email protected]> | 2024-06-26 05:50:02 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-06-26 05:50:02 -0700 |
| commit | 8b0eb9b9697a70fc284558eb9b8704c11246268a (patch) | |
| tree | 158f6400e1d4c38da74379f48f1269be745d97c5 /src/modules | |
| parent | feat(technology): add new entries (diff) | |
| download | locus-8b0eb9b9697a70fc284558eb9b8704c11246268a.tar.xz locus-8b0eb9b9697a70fc284558eb9b8704c11246268a.zip | |
fix(finger): paragraph joining
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/finger.rs | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/modules/finger.rs b/src/modules/finger.rs index de1eee9..99fecc5 100644 --- a/src/modules/finger.rs +++ b/src/modules/finger.rs @@ -60,9 +60,30 @@ To visit my personal Finger server, <finger://fuwn.me>, you would visit <gemini: }; #[allow(unsafe_code)] - response.push_str(unsafe { - &std::str::from_utf8_unchecked(&buffer[..bytes_read]) - .replace("finger://", "gemini://fuwn.me/finger/") + response.push_str(&unsafe { + let content = std::str::from_utf8_unchecked(&buffer[..bytes_read]) + .replace("finger://", "gemini://fuwn.me/finger/"); + let mut lines = content.lines().peekable(); + let mut result = String::new(); + + while let Some(line) = lines.next() { + if !line.is_empty() { + result.push_str(line); + + if lines + .peek() + .map_or(false, |&next_line| !next_line.is_empty()) + { + result.push(' '); + } else { + result.push('\n'); + } + } else { + result.push('\n'); + } + } + + result }); } |