// mime-todo/lib/sprint.ts export interface Sprint { name: string start: string // YYYY-MM-DD end: string // YYYY-MM-DD } export function parseSprints(text: string): Sprint[] { const lines = text.split(/\r?\n/) const sprints: Sprint[] = [] let current: Partial | null = null for (const line of lines) { // Start of sprint entry (must not trim indentation) if (/^\s*-\s*(Name:.*)?$/.test(line)) { if (current) sprints.push(current as Sprint) current = {} const match = line.match(/^\s*-\s*Name:\s*(.*)$/) if (match) current.name = match[1] continue } // Key-value pairs (must be indented) const kv = line.match(/^\s+([A-Za-z][A-Za-z0-9]*):\s*(.*)$/) if (kv && current) { const key = kv[1] const value = kv[2] if (key === "Name") current.name = value if (key === "Range") { const [start, end] = value.split("..") current.start = start current.end = end } } } if (current) sprints.push(current as Sprint) return sprints }