mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-01 18:25:00 +00:00
refactor to use io.read_text
This commit is contained in:
parent
9cab570f87
commit
4c220ff63f
2 changed files with 31 additions and 27 deletions
|
@ -26,7 +26,8 @@ class EditBlockCoder(Coder):
|
||||||
full_path = self.allowed_to_edit(path)
|
full_path = self.allowed_to_edit(path)
|
||||||
if not full_path:
|
if not full_path:
|
||||||
continue
|
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)
|
edited.add(path)
|
||||||
continue
|
continue
|
||||||
self.io.tool_error(f"Failed to apply edit to {path}")
|
self.io.tool_error(f"Failed to apply edit to {path}")
|
||||||
|
@ -34,6 +35,33 @@ class EditBlockCoder(Coder):
|
||||||
return edited
|
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):
|
def try_dotdotdots(whole, part, replace):
|
||||||
"""
|
"""
|
||||||
See if the edit block has ... lines.
|
See if the edit block has ... lines.
|
||||||
|
@ -211,31 +239,6 @@ def strip_quoted_wrapping(res, fname=None):
|
||||||
return res
|
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"
|
ORIGINAL = "<<<<<<< ORIGINAL"
|
||||||
DIVIDER = "======="
|
DIVIDER = "======="
|
||||||
UPDATED = ">>>>>>> UPDATED"
|
UPDATED = ">>>>>>> UPDATED"
|
||||||
|
|
|
@ -135,7 +135,8 @@ class EditBlockFunctionCoder(Coder):
|
||||||
full_path = self.allowed_to_edit(path)
|
full_path = self.allowed_to_edit(path)
|
||||||
if not full_path:
|
if not full_path:
|
||||||
continue
|
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)
|
edited.add(path)
|
||||||
continue
|
continue
|
||||||
self.io.tool_error(f"Failed to apply edit to {path}")
|
self.io.tool_error(f"Failed to apply edit to {path}")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue