diff options
| author | Teddy Wing | 2018-10-03 10:00:32 +0200 |
|---|---|---|
| committer | Teddy Wing | 2018-10-03 10:00:32 +0200 |
| commit | 7b040a5f3c8f66a2fd95bc1baccfa4fa2885425d (patch) | |
| tree | c8d6e5498ed03989b7f7b7c454d1504f06876f74 /src/parser.rs | |
| parent | 54cc9a4b02acf1339c63dabece9eaf07f28fb152 (diff) | |
| download | dome-key-map-7b040a5f3c8f66a2fd95bc1baccfa4fa2885425d.tar.bz2 | |
KeyboardKeyWithModifiers: Remove `Option` from `flags` field
I originally wrapped the contained `Vec` in an `Option` to that we
wouldn't have to initialise whole new empty `Vec` for every key in an
`Action` list.
However, this made less sense once I wrote the parser and ended up with
an empty `Vec` by default that I then had to convert into an `Option`.
Now I've started the code to type keys including modifiers, and the
`Option` no longer makes any sense at all. In order to type keys
(including modifiers), I'll be using Autopilot's `tap()` function:
pub fn tap<T: KeyCodeConvertible + Copy>(key: T, flags: &[Flag], delay_ms: u64) {
This function requires a slice, so I ended up getting a `Vec` from my
parser, converting it to an Option to satisfy my original interface, and
now would have to convert it back into a `Vec` or slice in order to be
able to pass it into `tap()`. Talk about unnecessary.
Get rid of the `Option` because it's more work for absolutely no reason.
Diffstat (limited to 'src/parser.rs')
| -rw-r--r-- | src/parser.rs | 128 |
1 files changed, 61 insertions, 67 deletions
diff --git a/src/parser.rs b/src/parser.rs index 5d79cc9..9e11175 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -73,11 +73,11 @@ enum KeyboardKey { #[derive(Debug, PartialEq)] struct KeyboardKeyWithModifiers { key: KeyboardKey, - flags: Option<Vec<Flag>>, + flags: Vec<Flag>, } impl KeyboardKeyWithModifiers { - fn new(key: KeyboardKey, modifiers: Option<Vec<Flag>>) -> Self { + fn new(key: KeyboardKey, modifiers: Vec<Flag>) -> Self { KeyboardKeyWithModifiers { key: key, flags: modifiers, @@ -253,7 +253,7 @@ where .map(|c| KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new(c)), - None, + vec![], ) ), special_key() @@ -305,12 +305,6 @@ where )) ) ).map(|(modifiers, key): (Vec<Flag>, KeyboardKey)| { - let modifiers = if modifiers.is_empty() { - None - } else { - Some(modifiers) - }; - KeyboardKeyWithModifiers::new( key, modifiers, @@ -627,47 +621,47 @@ mod tests { let expected = Action::Map(vec![ KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('t')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('y')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('p')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new(' ')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('h')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('l')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('l')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('o')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('!')), - None, + vec![], ), ]); let result = action_map().easy_parse(text).map(|t| t.0); @@ -682,39 +676,39 @@ mod tests { let expected = Action::Map(vec![ KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('o')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('n')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('l')), - Some(vec![Flag::Control]), + vec![Flag::Control], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('t')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('w')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('o')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('s')), - Some(vec![Flag::Meta]), + vec![Flag::Meta], ), KeyboardKeyWithModifiers::new( KeyboardKey::KeyCode(KeyCode::new(autopilot::key::KeyCode::LeftArrow)), - Some(vec![Flag::Alt]), + vec![Flag::Alt], ), ]); let result = action_map().easy_parse(text).map(|t| t.0); @@ -728,26 +722,26 @@ mod tests { let expected = Action::Map(vec![ KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('g')), - Some(vec![ + vec![ Flag::Control, Flag::Alt, - ]), + ], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('s')), - Some(vec![ + vec![ Flag::Meta, Flag::Shift, - ]), + ], ), KeyboardKeyWithModifiers::new( KeyboardKey::KeyCode(KeyCode::new(autopilot::key::KeyCode::Home)), - Some(vec![ + vec![ Flag::Meta, Flag::Alt, Flag::Control, Flag::Shift, - ]), + ], ), ]); let result = action_map().easy_parse(text).map(|t| t.0); @@ -762,43 +756,43 @@ mod tests { let expected = Action::Map(vec![ KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('r')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('a')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('d')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('y')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::KeyCode(KeyCode::new(autopilot::key::KeyCode::F2)), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::KeyCode(KeyCode::new(autopilot::key::KeyCode::Space)), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('g')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('o')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::KeyCode(KeyCode::new(autopilot::key::KeyCode::Escape)), - None, + vec![], ), ]); let result = action_map().easy_parse(text).map(|t| t.0); @@ -813,59 +807,59 @@ mod tests { let expected = Action::Map(vec![ KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('t')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('y')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('p')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('\\')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('o')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('n')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('b')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('s')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('l')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('a')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('s')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('h')), - None, + vec![], ), ]); let result = action_map().easy_parse(text).map(|t| t.0); @@ -880,35 +874,35 @@ mod tests { let expected = Action::Map(vec![ KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('t')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('y')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('p')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('e')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('<')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('l')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('t')), - None, + vec![], ), KeyboardKeyWithModifiers::new( KeyboardKey::Character(Character::new('>')), - None, + vec![], ), ]); let result = action_map().easy_parse(text).map(|t| t.0); |
