aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/finger.rs27
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
});
}