refactor to use io.read_text

This commit is contained in:
Paul Gauthier 2023-07-05 20:31:22 -07:00
parent 9cab570f87
commit 4c220ff63f
2 changed files with 31 additions and 27 deletions

View file

@ -26,7 +26,8 @@ class EditBlockCoder(Coder):
full_path = self.allowed_to_edit(path)
if not full_path:
continue
if do_replace(full_path, original, updated, self.dry_run):
content = self.io.read_text(full_path)
if do_replace(full_path, content, original, updated, self.dry_run):
edited.add(path)
continue
self.io.tool_error(f"Failed to apply edit to {path}")
@ -34,6 +35,33 @@ class EditBlockCoder(Coder):
return edited
def do_replace(fname, content, before_text, after_text, dry_run=False):
before_text = strip_quoted_wrapping(before_text, fname)
after_text = strip_quoted_wrapping(after_text, fname)
fname = Path(fname)
# does it want to make a new file?
if not fname.exists() and not before_text.strip():
fname.touch()
content = ""
if content is None:
return
if not before_text.strip():
# append to existing file, or start a new file
new_content = content + after_text
else:
new_content = replace_most_similar_chunk(content, before_text, after_text)
if not new_content:
return
if not dry_run:
fname.write_text(new_content)
return True
def try_dotdotdots(whole, part, replace):
"""
See if the edit block has ... lines.
@ -211,31 +239,6 @@ def strip_quoted_wrapping(res, fname=None):
return res
def do_replace(fname, before_text, after_text, dry_run=False):
before_text = strip_quoted_wrapping(before_text, fname)
after_text = strip_quoted_wrapping(after_text, fname)
fname = Path(fname)
# does it want to make a new file?
if not fname.exists() and not before_text.strip():
fname.touch()
content = fname.read_text()
if not before_text.strip():
# append to existing file, or start a new file
new_content = content + after_text
else:
new_content = replace_most_similar_chunk(content, before_text, after_text)
if not new_content:
return
if not dry_run:
fname.write_text(new_content)
return True
ORIGINAL = "<<<<<<< ORIGINAL"
DIVIDER = "======="
UPDATED = ">>>>>>> UPDATED"

View file

@ -135,7 +135,8 @@ class EditBlockFunctionCoder(Coder):
full_path = self.allowed_to_edit(path)
if not full_path:
continue
if do_replace(full_path, original, updated, self.dry_run):
content = self.io.read_text(full_path)
if do_replace(full_path, content, original, updated, self.dry_run):
edited.add(path)
continue
self.io.tool_error(f"Failed to apply edit to {path}")