~gbmor/clinte

9b749b946412b6f3d18c5d7997dc798f3947bb1e — Ben Morrison 1 year, 1 month ago 1e6f1de
configurable line wrapping (80 default)

disabled when set to a value below 10
2 files changed, 32 insertions(+), 1 deletions(-)

M src/conf.rs
M src/posts.rs
M src/conf.rs => src/conf.rs +8 -0
@@ 16,6 16,14 @@ fn get_config() -> clap::ArgMatches<'static> {
                .long("verbose")
                .help("Verbose logging"),
        )
        .arg(
            Arg::with_name("line")
                .short("l")
                .long("line")
                .value_name("LENGTH")
                .takes_value(true)
                .help("Line length (default: 80; a value <10 disables wrapping)"),
        )
        .subcommand(clap::SubCommand::with_name("post").about("Post a new notice"))
        .subcommand(
            clap::SubCommand::with_name("update")

M src/posts.rs => src/posts.rs +24 -1
@@ 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);
    });