33 lines
1 KiB
JavaScript
33 lines
1 KiB
JavaScript
export function parseSprints(text) {
|
|
const lines = text.split(/\r?\n/);
|
|
const sprints = [];
|
|
let current = 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);
|
|
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);
|
|
return sprints;
|
|
}
|