- pub_line, sub_line, fpr_line = nil
-
- key_array = key_output.split("\n").map do |line|
- if line.start_with?('pub')
- pub_line = line
- # reset fpr_line, to skip any previous subkeys which were collected
- fpr_line = nil
- sub_line = nil
- elsif line.start_with?('sub')
- sub_line = line
- elsif line.start_with?('fpr')
- fpr_line = line
- end
-
- if sub_line && fpr_line
- sub_line, fpr_line = nil
- next
+ pub_line = nil
+ fpr_lines = []
+ sub_lines = []
+
+ lines = key_output.split("\n")
+
+ lines.each_index do |i|
+ if lines[i].start_with?('pub')
+ pub_line = lines[i]
+ # starting a new public key, so reset fpr_lines and sub_lines
+ fpr_lines = []
+ sub_lines = []
+ elsif lines[i].start_with?('fpr')
+ fpr_lines << lines[i]
+ elsif lines[i].start_with?('sub')
+ sub_lines << lines[i]