summaryrefslogtreecommitdiffstats
path: root/src/print.rs
diff options
context:
space:
mode:
authorMatan Kushner <hello@matchai.me>2019-05-01 16:34:24 -0400
committerGitHub <noreply@github.com>2019-05-01 16:34:24 -0400
commitc6ee5c6ac16d360ab1a44d097c91fe9f98f20f85 (patch)
treee06814175f34e508fbae4de66571e3d0042786e7 /src/print.rs
parentd945b03093cf130bdc702056650f7e8e8869753b (diff)
Refactor segments into modules (#40)
Diffstat (limited to 'src/print.rs')
-rw-r--r--src/print.rs22
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());
}