54
54
```
55
55
""" .strip ()
56
56
57
+ ORIGINAL = "\n <<<<<<< ORIGINAL\n "
58
+ DIVIDER = "\n =======\n "
59
+ UPDATED = ">>>>>>> UPDATED\n "
60
+
57
61
58
62
def apply (codeblock : str , content : str ) -> str :
59
63
"""
@@ -64,11 +68,17 @@ def apply(codeblock: str, content: str) -> str:
64
68
codeblock = codeblock .strip ()
65
69
66
70
# get the original and modified chunks
67
- original = re .split ("\n <<<<<<< ORIGINAL\n " , codeblock )[1 ]
68
- original , modified = re .split ("\n =======\n " , original )
69
- if ">>>>>>> UPDATED\n " not in modified : # pragma: no cover
70
- raise ValueError ("invalid patch" , codeblock )
71
- modified = re .split (">>>>>>> UPDATED\n " , modified )[0 ].rstrip ("\n " )
71
+ if ORIGINAL not in codeblock : # pragma: no cover
72
+ raise ValueError (f"invalid patch, no `{ ORIGINAL .strip ()} `" , codeblock )
73
+ original = re .split (ORIGINAL , codeblock )[1 ]
74
+
75
+ if DIVIDER not in original : # pragma: no cover
76
+ raise ValueError (f"invalid patch, no `{ DIVIDER .strip ()} `" , codeblock )
77
+ original , modified = re .split (DIVIDER , original )
78
+
79
+ if UPDATED not in modified : # pragma: no cover
80
+ raise ValueError (f"invalid patch, no `{ UPDATED .strip ()} `" , codeblock )
81
+ modified = re .split (UPDATED , modified )[0 ].rstrip ("\n " )
72
82
73
83
# TODO: maybe allow modified chunk to contain "// ..." to refer to chunks in the original,
74
84
# and then replace these with the original chunks?
0 commit comments