@@ -37,13 +37,14 @@ def parse_evolve_blocks(code: str) -> List[Tuple[int, int, str]]:
3737 return blocks
3838
3939
40- def apply_diff (original_code : str , diff_text : str ) -> str :
40+ def apply_diff (original_code : str , diff_text : str , diff_pattern : str = r"<<<<<<< SEARCH\n(.*?)=======\n(.*?)>>>>>>> REPLACE" ) -> str :
4141 """
4242 Apply a diff to the original code
4343
4444 Args:
4545 original_code: Original source code
4646 diff_text: Diff in the SEARCH/REPLACE format
47+ diff_pattern: Regex pattern for the SEARCH/REPLACE format
4748
4849 Returns:
4950 Modified code
@@ -53,7 +54,7 @@ def apply_diff(original_code: str, diff_text: str) -> str:
5354 result_lines = original_lines .copy ()
5455
5556 # Extract diff blocks
56- diff_blocks = extract_diffs (diff_text )
57+ diff_blocks = extract_diffs (diff_text , diff_pattern )
5758
5859 # Apply each diff block
5960 for search_text , replace_text in diff_blocks :
@@ -70,17 +71,17 @@ def apply_diff(original_code: str, diff_text: str) -> str:
7071 return "\n " .join (result_lines )
7172
7273
73- def extract_diffs (diff_text : str ) -> List [Tuple [str , str ]]:
74+ def extract_diffs (diff_text : str , diff_pattern : str = r"<<<<<<< SEARCH\n(.*?)=======\n(.*?)>>>>>>> REPLACE" ) -> List [Tuple [str , str ]]:
7475 """
7576 Extract diff blocks from the diff text
7677
7778 Args:
7879 diff_text: Diff in the SEARCH/REPLACE format
80+ diff_pattern: Regex pattern for the SEARCH/REPLACE format
7981
8082 Returns:
8183 List of tuples (search_text, replace_text)
8284 """
83- diff_pattern = r"<<<<<<< SEARCH\n(.*?)=======\n(.*?)>>>>>>> REPLACE"
8485 diff_blocks = re .findall (diff_pattern , diff_text , re .DOTALL )
8586 return [(match [0 ].rstrip (), match [1 ].rstrip ()) for match in diff_blocks ]
8687
0 commit comments