44 lines
1.7 KiB
Markdown
44 lines
1.7 KiB
Markdown
---
|
|
epic: 5
|
|
story: 5.2
|
|
title: "Line References"
|
|
status: draft
|
|
---
|
|
|
|
## Epic 5 — Variables, Line References & Aggregators
|
|
**Goal:** Transform the notepad into a lightweight computational document.
|
|
|
|
### Story 5.2: Line References
|
|
|
|
As a **CalcPad user**,
|
|
I want to reference the result of a specific line by its line number,
|
|
So that I can build calculations that depend on intermediate results without naming every value.
|
|
|
|
**Acceptance Criteria:**
|
|
|
|
**Given** line 1 evaluates to `100`
|
|
**When** the user writes `line1 * 2` on any subsequent line
|
|
**Then** the engine resolves `line1` to `100` and the result is `200`
|
|
|
|
**Given** line 1 evaluates to `100`
|
|
**When** the user writes `#1 * 2` on any subsequent line
|
|
**Then** the engine resolves `#1` to `100` and the result is `200`
|
|
|
|
**Given** line 3 contains `line1 * 2` referencing line 1
|
|
**When** the user inserts a new line above line 1 (shifting the original line 1 to line 2)
|
|
**Then** the reference updates so it still points to the original line (now line 2)
|
|
**And** the expression on the shifted line becomes `line2 * 2` or the reference is internally resolved correctly
|
|
|
|
**Given** line 1 contains `#2 * 2` and line 2 contains `#1 + 3`
|
|
**When** the engine evaluates the sheet
|
|
**Then** a circular reference error is detected and reported on both lines
|
|
**And** neither line produces a numeric result (both show an error indicator)
|
|
|
|
**Given** a line references `#99` but only 10 lines exist
|
|
**When** the engine evaluates the sheet
|
|
**Then** the line displays an error such as "invalid line reference"
|
|
|
|
**Given** line 5 is a comment or empty line with no numeric result
|
|
**When** another line references `#5`
|
|
**Then** the engine reports an error or returns `0` with a clear indication that the referenced line has no value
|