forked from All-Hands-AI/OpenHands
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdiff_parser.py
50 lines (43 loc) · 1.31 KB
/
diff_parser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def parse_diff(diff_text):
lines = diff_text.strip().split('\n')
changes = []
current_change = {'removed': [], 'added': []}
for line in lines[2:]: # Skip the first two lines (diff header)
if line.startswith('-'):
current_change['removed'].append(line[1:])
elif line.startswith('+'):
current_change['added'].append(line[1:])
else:
if current_change['removed'] or current_change['added']:
changes.append(current_change)
current_change = {'removed': [], 'added': []}
if current_change['removed'] or current_change['added']:
changes.append(current_change)
return changes
# Example usage
diff_text = """
--- actual output
+++ expected output
@@ -1,7 +1,7 @@
-n a m e
-u n i t
+===== ========
wave response
nm ct
===== ========
350.0 0.7
950.0 1.2
+===== ========
"""
parsed_changes = parse_diff(diff_text)
for i, change in enumerate(parsed_changes, 1):
print(f'Change {i}:')
if change['removed']:
print(' Removed:')
for line in change['removed']:
print(f' {line}')
if change['added']:
print(' Added:')
for line in change['added']:
print(f' {line}')
print()