Files
dojo_cate/tests/gridedit.py
T

37 lines
1013 B
Python

"""Helpers to mutate a quadrant fixture at grid coordinates."""
def grid_lines(text: str) -> list[str]:
"""Grid lines without comments, right-padded to full width, as the parser sees them."""
lines = [line for line in text.splitlines() if line.strip() and not line.startswith("#")]
width = len(lines[0])
return [line.ljust(width) for line in lines]
def edit(text: str, line: int, column: int, replacement: str) -> str:
"""Overwrite characters of grid line ``line`` (0-based, comments excluded) at ``column``."""
lines = grid_lines(text)
target = lines[line]
lines[line] = target[:column] + replacement + target[column + len(replacement) :]
return "\n".join(lines) + "\n"
def cell_line(row: int) -> int:
return 2 * row + 1
def wall_line_above(row: int) -> int:
return 2 * row
def cell_column(col: int) -> int:
return 4 * col + 2
def wall_column_left_of(col: int) -> int:
return 4 * col
def h_segment_column(col: int) -> int:
return 4 * col + 1