2024-02-02 12:03:44 +00:00
|
|
|
import re
|
|
|
|
from difflib import ndiff
|
|
|
|
|
|
|
|
|
|
|
|
def get_diff(original, modified):
|
|
|
|
"""
|
|
|
|
Get the difference between two strings using difflib.
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
- original: The original string.
|
|
|
|
- modified: The modified string.
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
A list of differences.
|
|
|
|
"""
|
|
|
|
diff = list(ndiff(original.split(), modified.split()))
|
|
|
|
return diff
|
|
|
|
|
2024-02-02 12:59:22 +00:00
|
|
|
|
2024-02-02 12:03:44 +00:00
|
|
|
def apply_diff(original, diff):
|
|
|
|
"""
|
|
|
|
Apply the difference to the original string.
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
- original: The original string.
|
|
|
|
- diff: The difference obtained from get_diff function.
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
The modified string.
|
|
|
|
"""
|
|
|
|
result = []
|
2024-02-21 07:27:16 +00:00
|
|
|
pattern = re.compile(r"^(\+|-) ")
|
2024-02-02 12:03:44 +00:00
|
|
|
|
|
|
|
for line in diff:
|
|
|
|
match = pattern.match(line)
|
|
|
|
if match:
|
|
|
|
op = match.group(1)
|
|
|
|
content = line[2:]
|
2024-02-21 07:27:16 +00:00
|
|
|
if op == "+":
|
2024-02-02 12:03:44 +00:00
|
|
|
result.append(content)
|
2024-02-21 07:27:16 +00:00
|
|
|
elif op == "-":
|
2024-02-02 12:03:44 +00:00
|
|
|
# Ignore deleted lines
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
result.append(line)
|
|
|
|
|
2024-02-21 07:27:16 +00:00
|
|
|
return " ".join(result)
|