diff options
author | a-kenji <aks.kenji@protonmail.com> | 2021-07-09 13:09:05 +0200 |
---|---|---|
committer | a-kenji <aks.kenji@protonmail.com> | 2021-07-09 13:09:05 +0200 |
commit | 89f84ecd3f1a1573d0f3d8e0c46426d162f2b2e4 (patch) | |
tree | f10fba13d692ce65ac3b0cd5f36f1ad1cc057fa0 /zellij-utils | |
parent | 6299660d5caf294d10ddaf5c6df44ee14889a5f7 (diff) |
Simplify merging of options
Diffstat (limited to 'zellij-utils')
-rw-r--r-- | zellij-utils/src/input/options.rs | 42 |
1 files changed, 8 insertions, 34 deletions
diff --git a/zellij-utils/src/input/options.rs b/zellij-utils/src/input/options.rs index c2f2ba557..714e6524b 100644 --- a/zellij-utils/src/input/options.rs +++ b/zellij-utils/src/input/options.rs @@ -74,42 +74,16 @@ impl Options { /// will supercede a `Some` in `self` // TODO: Maybe a good candidate for a macro? pub fn merge(&self, other: Options) -> Options { - let simplified_ui = if other.simplified_ui { - true - } else { - self.simplified_ui - }; - - let default_mode = match other.default_mode { - None => self.default_mode, - other => other, - }; - - let default_shell = match other.default_shell { - None => self.default_shell.clone(), - other => other, - }; + let merge_bool = |opt_other, opt_self| if opt_other { true } else { opt_self }; - let layout_dir = match other.layout_dir { - None => self.layout_dir.clone(), - other => other, - }; - - let theme = match other.theme { - None => self.theme.clone(), - other => other, - }; - - let disable_mouse_mode = if other.disable_mouse_mode { - true - } else { - self.disable_mouse_mode - }; + let simplified_ui = merge_bool(other.simplified_ui, self.simplified_ui); + let disable_mouse_mode = merge_bool(other.disable_mouse_mode, self.disable_mouse_mode); - let on_force_close = match other.on_force_close { - None => self.on_force_close, - other => other, - }; + let default_mode = other.default_mode.or(self.default_mode); + let default_shell = other.default_shell.or_else(|| self.default_shell.clone()); + let layout_dir = other.layout_dir.or_else(|| self.layout_dir.clone()); + let theme = other.theme.or_else(|| self.theme.clone()); + let on_force_close = other.on_force_close.or(self.on_force_close); Options { simplified_ui, |