Skip to content

Commit 08271cf

Browse files
committed
refactor: Make line numbers relative to search range context
1 parent 08cc4cb commit 08271cf

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

src/text_manipulation/range_spec.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,23 @@ def from_line_marker(
193193
marker_subtype = (search_term.marker_subtype or "").casefold()
194194

195195
match marker_subtype:
196-
case 'number': # Simple case: a line number
197-
index = int(stripped_search) - 1
198-
assert 0 <= index < len(lines), (
199-
f"Line number {stripped_search} out of bounds "
200-
f"(must be in interval [1, {len(lines)}])"
201-
)
196+
case 'number': # Line number relative to search range
197+
relative_index = int(stripped_search) - 1
198+
if search_range:
199+
# Make index relative to search range start
200+
index = search_range.start + relative_index
201+
assert search_range.start <= index < search_range.end, (
202+
f"Line number {stripped_search} out of bounds "
203+
f"(must be in interval [1, {search_range.end - search_range.start}] "
204+
f"relative to context)"
205+
)
206+
else:
207+
# No context - use absolute file line number
208+
index = relative_index
209+
assert 0 <= index < len(lines), (
210+
f"Line number {stripped_search} out of bounds "
211+
f"(must be in interval [1, {len(lines)}])"
212+
)
202213
reference_indent = get_line_indent_count_from_lines(lines, index)
203214
index += calc_index_delta_for_relative_position(search_term)
204215
return cls(index, index, reference_indent)

tests/corpus/x.update.identifier.insert.after.line-number/1.py renamed to tests/corpus/update.identifier.insert.after.line-number/1.py

File renamed without changes.

tests/corpus/x.update.identifier.insert.after.line-number/chat.xml renamed to tests/corpus/update.identifier.insert.after.line-number/chat.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<no-train>
22
```CEDARScript
3-
UPDATE CLASS "B"
3+
UPDATE METHOD "calculate" OFFSET 1
44
FROM FILE "1.py"
55
REPLACE LINE 1
66
WITH CONTENT '''

tests/corpus/x.update.identifier.insert.after.line-number/expected.1.py renamed to tests/corpus/update.identifier.insert.after.line-number/expected.1.py

File renamed without changes.

0 commit comments

Comments
 (0)