summary refs log tree commit diff stats
path: root/src/posts.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/posts.rs')
-rw-r--r--src/posts.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/posts.rs b/src/posts.rs
index 4553b3e..c44e0f5 100644
--- a/src/posts.rs
+++ b/src/posts.rs
@@ -1,5 +1,6 @@
 use std::io;
 
+use crate::conf;
 use crate::db;
 use crate::error;
 use crate::user;
@@ -74,16 +75,38 @@ pub fn create() -> error::Result<()> {
 
 // Shows the most recent posts.
 pub fn display() -> error::Result<()> {
+    let args = &*conf::ARGS;
+    let line_len = args
+        .value_of("line")
+        .unwrap_or_else(|| "80")
+        .parse::<usize>()
+        .unwrap_or_else(|_| 80);
+
     let all = db::Posts::get_all(db::PATH);
 
     let mut postvec = Vec::new();
     all.posts().iter().enumerate().for_each(|(id, post)| {
+        let body = post
+            .body
+            .trim()
+            .chars()
+            .into_iter()
+            .enumerate()
+            .map(|(i, e)| {
+                let i = i + 1;
+                if line_len > 9 && i % line_len == 0 {
+                    return format!("{}\n", e);
+                }
+                e.to_string()
+            })
+            .collect::<String>();
+
         let newpost = format!(
             "{}. {} -> by {}\n{}\n\n",
             id + 1,
             post.title.trim(),
             post.author,
-            post.body.trim()
+            body
         );
         postvec.push(newpost);
     });