@@ -624,40 +624,22 @@ fn parse_keybind(
624
624
625
625
// Delete the @ and ~ in the last token
626
626
fn strip_at ( token : & str ) -> & str {
627
- if token. starts_with ( '@' ) {
628
- let token = token. strip_prefix ( '@' ) . unwrap ( ) ;
629
- strip_tilde ( token)
630
- } else if token. starts_with ( '~' ) {
631
- strip_tilde ( token)
632
- } else {
633
- token
634
- }
635
- }
636
-
637
- fn strip_tilde ( token : & str ) -> & str {
638
- if token. starts_with ( '~' ) {
639
- let token = token. strip_prefix ( '~' ) . unwrap ( ) ;
640
- strip_at ( token)
641
- } else if token. starts_with ( '@' ) {
642
- strip_at ( token)
643
- } else {
644
- token
645
- }
627
+ token. trim_start_matches ( [ '@' , '~' ] )
646
628
}
647
629
648
630
let last_token = strip_at ( last_token) ;
631
+ let tokens_no_at: Vec < _ > = tokens_new. iter ( ) . map ( |token| strip_at ( token) ) . collect ( ) ;
649
632
650
633
// Check if each token is valid
651
- for token in & tokens_new {
652
- let token = strip_at ( token) ;
634
+ for token in & tokens_no_at {
653
635
if key_to_evdev_key. contains_key ( token) {
654
636
// Can't have a keysym that's like a modifier
655
- if token != last_token {
637
+ if * token != last_token {
656
638
return Err ( Error :: InvalidConfig ( ParseError :: InvalidModifier ( path, line_nr) ) ) ;
657
639
}
658
640
} else if mod_to_mod_enum. contains_key ( token) {
659
641
// Can't have a modifier that's like a keysym
660
- if token == last_token {
642
+ if * token == last_token {
661
643
return Err ( Error :: InvalidConfig ( ParseError :: InvalidKeysym ( path, line_nr) ) ) ;
662
644
}
663
645
} else {
@@ -668,9 +650,9 @@ fn parse_keybind(
668
650
// Translate keypress into evdev key
669
651
let keysym = key_to_evdev_key. get ( last_token) . unwrap ( ) ;
670
652
671
- let modifiers: Vec < Modifier > = tokens_new [ 0 ..( tokens_new . len ( ) - 1 ) ]
653
+ let modifiers: Vec < Modifier > = tokens_no_at [ 0 ..( tokens_no_at . len ( ) - 1 ) ]
672
654
. iter ( )
673
- . map ( |token| * mod_to_mod_enum. get ( strip_at ( token. as_str ( ) ) ) . unwrap ( ) )
655
+ . map ( |token| * mod_to_mod_enum. get ( token) . unwrap ( ) )
674
656
. collect ( ) ;
675
657
676
658
let mut keybinding = KeyBinding :: new ( * keysym, modifiers) ;
0 commit comments