diff options
author | Zhenhui Xie <xiezh0831@yahoo.co.jp> | 2020-07-08 06:45:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-07 18:45:32 -0400 |
commit | ec76fafff08933f6f31fb99ea974bdb5ae97a0af (patch) | |
tree | bb2c822cdf291635f03d27677c419488ecf77f53 /src/modules/java.rs | |
parent | 0f52b7b12e8c1a2060aa873a68032937dfa2c044 (diff) |
feat: refactor modules to use format strings (#1374)
Diffstat (limited to 'src/modules/java.rs')
-rw-r--r-- | src/modules/java.rs | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/modules/java.rs b/src/modules/java.rs index 177e95451..faf7d8c6e 100644 --- a/src/modules/java.rs +++ b/src/modules/java.rs @@ -1,6 +1,7 @@ use crate::configs::java::JavaConfig; +use crate::formatter::StringFormatter; -use super::{Context, Module, RootModuleConfig, SegmentConfig}; +use super::{Context, Module, RootModuleConfig}; use crate::modules::utils::java_version_parser; use crate::utils; @@ -25,12 +26,31 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { Some(java_version) => { let mut module = context.new_module("java"); let config: JavaConfig = JavaConfig::try_load(module.config); - module.set_style(config.style); - let formatted_version = format_java_version(java_version)?; - module.create_segment("symbol", &config.symbol); - module.create_segment("version", &SegmentConfig::new(&formatted_version)); + let parsed = StringFormatter::new(config.format).and_then(|formatter| { + formatter + .map_meta(|var, _| match var { + "symbol" => Some(config.symbol), + _ => None, + }) + .map_style(|variable| match variable { + "style" => Some(Ok(config.style)), + _ => None, + }) + .map(|variable| match variable { + "version" => Some(Ok(&formatted_version)), + _ => None, + }) + .parse(None) + }); + module.set_segments(match parsed { + Ok(segments) => segments, + Err(error) => { + log::warn!("Error in module `java`:\n{}", error); + return None; + } + }); Some(module) } None => None, |