+ {specification}
+
+ )
+ }
+
+ const segments: { text: string; type: 'covered' | 'uncovered' }[] = []
+ let cursor = 0
+ for (const snip of mergedSnippets) {
+ if (snip.offset > cursor) {
+ segments.push({ text: specification.substring(cursor, snip.offset), type: 'uncovered' })
+ }
+ segments.push({ text: specification.substring(snip.offset, snip.end), type: 'covered' })
+ cursor = snip.end
+ }
+ if (cursor < specification.length) {
+ segments.push({ text: specification.substring(cursor), type: 'uncovered' })
+ }
+
+ return (
+
+ {segments.map((seg, idx) => (
+
+ {seg.text}
+
+ ))}
+
+ )
+ }
+
+ const matchingSnippets = selectedWorkItem.snippets
+ .filter((s) => s.match && s.offset != null && s.section)
+ .sort((a, b) => a.offset - b.offset)
+
+ const selectedRanges: { offset: number; end: number }[] = []
+ for (const s of matchingSnippets) {
+ selectedRanges.push({ offset: s.offset, end: s.offset + s.section.length })
+ }
+ if (selectedRanges.length > 1) {
+ selectedRanges.sort((a, b) => a.offset - b.offset)
+ const merged: { offset: number; end: number }[] = [selectedRanges[0]]
+ for (let i = 1; i < selectedRanges.length; i++) {
+ const prev = merged[merged.length - 1]
+ if (selectedRanges[i].offset <= prev.end) {
+ prev.end = Math.max(prev.end, selectedRanges[i].end)
+ } else {
+ merged.push(selectedRanges[i])
+ }
+ }
+ selectedRanges.length = 0
+ selectedRanges.push(...merged)
+ }
+
+ if (selectedRanges.length === 0) {
+ return (
+
+ {specification}
+
+ )
+ }
+
+ const firstStart = selectedRanges[0].offset
+ const lastEnd = selectedRanges[selectedRanges.length - 1].end
+
+ const segments: { text: string; type: 'covered' | 'uncovered' }[] = []
+ let cursor = firstStart
+ for (const range of selectedRanges) {
+ if (range.offset > cursor) {
+ segments.push({ text: specification.substring(cursor, range.offset), type: 'uncovered' })
+ }
+ segments.push({ text: specification.substring(range.offset, range.end), type: 'covered' })
+ cursor = range.end
+ }
+
+ return (
+
+ {segments.map((seg, idx) => (
+
+ {seg.text}
+
+ ))}
+
+