initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
---
|
||||
epic: 5
|
||||
story: 5.4
|
||||
title: "Section Aggregators"
|
||||
status: draft
|
||||
---
|
||||
|
||||
## Epic 5 — Variables, Line References & Aggregators
|
||||
**Goal:** Transform the notepad into a lightweight computational document.
|
||||
|
||||
### Story 5.4: Section Aggregators
|
||||
|
||||
As a **CalcPad user**,
|
||||
I want to use aggregation keywords like `sum`, `total`, `average`, `min`, `max`, and `count` to compute over a section of lines,
|
||||
So that I can quickly summarize a group of related values without manually writing out each reference.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
|
||||
**Given** lines 1–4 contain numeric values `10`, `20`, `30`, `40` and line 5 is empty
|
||||
**When** the user writes `sum` on line 5 (or after the group)
|
||||
**Then** the result is `100` (sum of lines 1–4)
|
||||
|
||||
**Given** lines 1–4 contain numeric values and line 5 is a heading `## Monthly Costs`
|
||||
**When** the user writes `total` immediately after lines 6–9 (which contain values under that heading)
|
||||
**Then** `total` sums only lines 6–9 (the section bounded by the heading above and the aggregator line)
|
||||
|
||||
**Given** a section with values `10`, `20`, `30`
|
||||
**When** the user writes `average` (or `avg`) at the end of the section
|
||||
**Then** the result is `20`
|
||||
|
||||
**Given** a section with values `5`, `12`, `3`, `8`
|
||||
**When** the user writes `min` at the end of the section
|
||||
**Then** the result is `3`
|
||||
|
||||
**Given** a section with values `5`, `12`, `3`, `8`
|
||||
**When** the user writes `max` at the end of the section
|
||||
**Then** the result is `12`
|
||||
|
||||
**Given** a section with values `5`, `12`, `3`, `8`
|
||||
**When** the user writes `count` at the end of the section
|
||||
**Then** the result is `4` (number of lines with numeric results)
|
||||
|
||||
**Given** a section contains a mix of numeric lines and comment lines
|
||||
**When** an aggregator is applied
|
||||
**Then** only lines with numeric results are included in the aggregation (comments and blank lines are skipped)
|
||||
|
||||
**Given** an empty section (heading immediately followed by another heading or end-of-document)
|
||||
**When** the user writes `sum`
|
||||
**Then** the result is `0` (or an appropriate indication that there are no values to aggregate)
|
||||
Reference in New Issue
Block a user