@@ -31,14 +31,14 @@ def initialize(page)
31
31
end
32
32
33
33
def down ( key )
34
- key = normalize_keys ( Array ( key ) )
34
+ key = normalize_keys ( Array ( key ) ) . first
35
35
type = key [ :text ] ? "keyDown" : "rawKeyDown"
36
36
@page . command ( "Input.dispatchKeyEvent" , slowmoable : true , type : type , **key )
37
37
self
38
38
end
39
39
40
40
def up ( key )
41
- key = normalize_keys ( Array ( key ) )
41
+ key = normalize_keys ( Array ( key ) ) . first
42
42
@page . command ( "Input.dispatchKeyEvent" , slowmoable : true , type : "keyUp" , **key )
43
43
self
44
44
end
@@ -61,9 +61,14 @@ def modifiers(keys)
61
61
62
62
private
63
63
64
+ # TODO: Refactor it, and try to simplify complexity
65
+ # rubocop:disable Metrics/PerceivedComplexity
66
+ # rubocop:disable Metrics/CyclomaticComplexity
64
67
def normalize_keys ( keys , pressed_keys = [ ] , memo = [ ] )
65
68
case keys
66
69
when Array
70
+ raise ArgumentError , "empty keys passed" if keys . empty?
71
+
67
72
pressed_keys . push ( [ ] )
68
73
memo += combine_strings ( keys ) . map do |key |
69
74
normalize_keys ( key , pressed_keys , memo )
@@ -82,6 +87,8 @@ def normalize_keys(keys, pressed_keys = [], memo = [])
82
87
to_options ( key )
83
88
end
84
89
when String
90
+ raise ArgumentError , "empty keys passed" if keys . empty?
91
+
85
92
pressed = pressed_keys . flatten
86
93
keys . each_char . map do |char |
87
94
key = KEYS [ char ] || { }
@@ -102,8 +109,12 @@ def normalize_keys(keys, pressed_keys = [], memo = [])
102
109
modifiers + [ to_options ( key ) ]
103
110
end . flatten
104
111
end
112
+ else
113
+ raise ArgumentError , "unexpected argument"
105
114
end
106
115
end
116
+ # rubocop:enable Metrics/PerceivedComplexity
117
+ # rubocop:enable Metrics/CyclomaticComplexity
107
118
108
119
def combine_strings ( keys )
109
120
keys
0 commit comments