diff options
author | Matan Kushner <hello@matchai.me> | 2019-05-01 16:34:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-01 16:34:24 -0400 |
commit | c6ee5c6ac16d360ab1a44d097c91fe9f98f20f85 (patch) | |
tree | e06814175f34e508fbae4de66571e3d0042786e7 /src/print.rs | |
parent | d945b03093cf130bdc702056650f7e8e8869753b (diff) |
Refactor segments into modules (#40)
Diffstat (limited to 'src/print.rs')
-rw-r--r-- | src/print.rs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/print.rs b/src/print.rs index e2f0a0669..780d90998 100644 --- a/src/print.rs +++ b/src/print.rs @@ -2,6 +2,7 @@ use clap::ArgMatches; use std::io::{self, Write}; use crate::context::Context; +use crate::module::Module; use crate::modules; pub fn prompt(args: ArgMatches) { @@ -27,11 +28,20 @@ pub fn prompt(args: ArgMatches) { // Write a new line before the prompt writeln!(handle).unwrap(); - prompt_order + let modules = prompt_order .iter() - .map(|module| modules::handle(module, &context)) // Compute segments - .flatten() // Remove segments set to `None` - .enumerate() // Turn segment into tuple with index - .map(|(index, segment)| segment.output_index(index)) // Generate string outputs - .for_each(|segment_string| write!(handle, "{}", segment_string).unwrap()); + .map(|module| modules::handle(module, &context)) // Compute modules + .flatten() + .collect::<Vec<Module>>(); // Remove segments set to `None` + + let mut printable = modules.iter(); + + // Print the first module without its prefix + if let Some(first_module) = printable.next() { + let module_without_prefix = first_module.to_string_without_prefix(); + write!(handle, "{}", module_without_prefix).unwrap() + } + + // Print all remaining modules + printable.for_each(|module| write!(handle, "{}", module).unwrap()); } |