diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2018-01-04 23:09:30 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2018-01-05 11:37:09 +0100 |
commit | 40490c10d64cebc3be43a7447cd33bd2517c23b1 (patch) | |
tree | 35f4d2ce2a23316e04e9e867cc1f177ed5877ffc | |
parent | dd66936e48684b6cad599ee0041486b439a6f898 (diff) |
Refactoring: Use function chaining rather than matching
-rw-r--r-- | lib/etc/libimaginteraction/src/readline.rs | 64 |
1 files changed, 30 insertions, 34 deletions
diff --git a/lib/etc/libimaginteraction/src/readline.rs b/lib/etc/libimaginteraction/src/readline.rs index 86aa51a9..321580eb 100644 --- a/lib/etc/libimaginteraction/src/readline.rs +++ b/lib/etc/libimaginteraction/src/readline.rs @@ -42,40 +42,36 @@ impl Readline { let histignspace = c.lookup("ui.cli.readline_history_ignore_space").ok_or(IEK::ConfigError)?; let prompt = c.lookup("ui.cli.readline_prompt").ok_or(IEK::ConfigError)?; - let histfile = match histfile { - Value::String(s) => PathBuf::from(s), - _ => Err(IE::from_kind(IEK::ConfigTypeError)) - .chain_err(|| IEK::ConfigError) - .chain_err(|| IEK::ReadlineError) - }?; - - let histsize = match histsize { - Value::Integer(i) => i, - _ => Err(IE::from_kind(IEK::ConfigTypeError)) - .chain_err(|| IEK::ConfigError) - .chain_err(|| IEK::ReadlineError) - }?; - - let histigndups = match histigndups { - Value::Boolean(b) => b, - _ => Err(IE::from_kind(IEK::ConfigTypeError)) - .chain_err(|| IEK::ConfigError) - .chain_err(|| IEK::ReadlineError) - }?; - - let histignspace = match histignspace { - Value::Boolean(b) => b, - _ => Err(IE::from_kind(IEK::ConfigTypeError)) - .chain_err(|| IEK::ConfigError) - .chain_err(|| IEK::ReadlineError) - }?; - - let prompt = match prompt { - Value::String(s) => s, - _ => Err(IE::from_kind(IEK::ConfigTypeError)) - .chain_err(|| IEK::ConfigError) - .chain_err(|| IEK::ReadlineError) - }?; + let histfile = histfile + .as_str() + .map(PathBuf::from) + .ok_or(IE::from_kind(IEK::ConfigTypeError)) + .chain_err(|| IEK::ConfigError) + .chain_err(|| IEK::ReadlineError)?; + + let histsize = histsize + .as_int() + .ok_or(IE::from_kind(IEK::ConfigTypeError)) + .chain_err(|| IEK::ConfigError) + .chain_err(|| IEK::ReadlineError)?; + + let histigndups = histigndups + .as_bool() + .ok_or(IE::from_kind(IEK::ConfigTypeError)) + .chain_err(|| IEK::ConfigError) + .chain_err(|| IEK::ReadlineError)?; + + let histignspace = histignspace + .as_bool() + .ok_or(IE::from_kind(IEK::ConfigTypeError)) + .chain_err(|| IEK::ConfigError) + .chain_err(|| IEK::ReadlineError)?; + + let prompt = prompt + .as_str() + .ok_or(IE::from_kind(IEK::ConfigTypeError)) + .chain_err(|| IEK::ConfigError) + .chain_err(|| IEK::ReadlineError)?; let config = Config::builder(). .max_history_size(histsize) |