diff options
Diffstat (limited to 'alacritty/src')
-rw-r--r-- | alacritty/src/cli.rs | 29 | ||||
-rw-r--r-- | alacritty/src/config/window.rs | 10 |
2 files changed, 21 insertions, 18 deletions
diff --git a/alacritty/src/cli.rs b/alacritty/src/cli.rs index 8872ec99..e9c563d4 100644 --- a/alacritty/src/cli.rs +++ b/alacritty/src/cli.rs @@ -11,7 +11,7 @@ use serde_yaml::Value; use alacritty_terminal::config::{Program, PtyConfig}; -use crate::config::window::{Class, Identity, DEFAULT_NAME}; +use crate::config::window::{Class, Identity}; use crate::config::{serde_utils, UiConfig}; /// CLI options for the main Alacritty executable. @@ -159,19 +159,16 @@ fn option_as_value(option: &str) -> Result<Value, serde_yaml::Error> { /// Parse the class CLI parameter. fn parse_class(input: &str) -> Result<Class, String> { - match input.find(',') { - Some(position) => { - let general = input[position + 1..].to_owned(); - - // Warn the user if they've passed too many values. - if general.contains(',') { - return Err(String::from("Too many parameters")); - } - - Ok(Class { instance: input[..position].into(), general }) + let (general, instance) = match input.split_once(',') { + // Warn the user if they've passed too many values. + Some((_, instance)) if instance.contains(',') => { + return Err(String::from("Too many parameters")) }, - None => Ok(Class { instance: input.into(), general: DEFAULT_NAME.into() }), - } + Some((general, instance)) => (general, instance), + None => (input, input), + }; + + Ok(Class::new(general, instance)) } /// Convert to hex if possible, else decimal @@ -385,15 +382,15 @@ mod tests { #[test] fn parse_instance_class() { let class = parse_class("one").unwrap(); + assert_eq!(class.general, "one"); assert_eq!(class.instance, "one"); - assert_eq!(class.general, DEFAULT_NAME); } #[test] fn parse_general_class() { let class = parse_class("one,two").unwrap(); - assert_eq!(class.instance, "one"); - assert_eq!(class.general, "two"); + assert_eq!(class.general, "one"); + assert_eq!(class.instance, "two"); } #[test] diff --git a/alacritty/src/config/window.rs b/alacritty/src/config/window.rs index 8a59a007..80df87b7 100644 --- a/alacritty/src/config/window.rs +++ b/alacritty/src/config/window.rs @@ -203,13 +203,19 @@ pub struct Dimensions { /// Window class hint. #[derive(Serialize, Debug, Clone, PartialEq, Eq)] pub struct Class { - pub instance: String, pub general: String, + pub instance: String, +} + +impl Class { + pub fn new(general: impl ToString, instance: impl ToString) -> Self { + Self { general: general.to_string(), instance: instance.to_string() } + } } impl Default for Class { fn default() -> Self { - Self { instance: DEFAULT_NAME.into(), general: DEFAULT_NAME.into() } + Self::new(DEFAULT_NAME, DEFAULT_NAME) } } |