CraftJest / src /tools /utilities.py
firnnauriel's picture
Refactor app structure and add Jest test generation feature
448c329
def read_markdown_file(file_path):
"""Reads a Markdown file and returns its content as a string.
Args:
file_path: The path to the Markdown file.
Returns:
The content of the file as a string, or an error message if the file
cannot be read.
"""
try:
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
return content
except FileNotFoundError:
return f"Error: The file at {file_path} was not found."
except Exception as e:
return f"An error occurred: {e}"
def replace_markdown_section_including_markers(filepath, start_marker, end_marker, new_content):
"""
Replaces a section in a Markdown file, including the start and end markers themselves.
Args:
filepath (str): The path to the Markdown file.
start_marker (str): The unique string marking the start of the section.
end_marker (str): The unique string marking the end of the section.
new_content (str): The new content to insert, which will replace the old section
and its markers.
Returns:
The modified content of the file as a string, or an error message if the file cannot be read.
"""
try:
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
start_index = content.find(start_marker)
if start_index == -1:
print(f"Error: Start marker '{start_marker}' not found in the file.")
return
# Find the end marker starting from after the start marker's position
# This prevents issues if the end marker appears before the start marker later in the file
end_index = content.find(end_marker, start_index)
if end_index == -1:
print(f"Error: End marker '{end_marker}' not found after start marker in the file.")
return
# Calculate the actual end of the section to be replaced (inclusive of end_marker)
section_end_inclusive = end_index + len(end_marker)
# Construct the modified content
modified_content = (
content[:start_index] + # Content before the start marker
new_content + # The new content replaces the entire old block
content[section_end_inclusive:] # Content after the end marker
)
return modified_content
except FileNotFoundError:
return f"Error: File '{filepath}' not found."
except Exception as e:
return f"An error occurred: {e}"