(input: string)
| 135 | * Parse an ANSI string into spans using the termio parser. |
| 136 | */ |
| 137 | export function parseToSpans(input: string): Span[] { |
| 138 | if (input.length >= ANSI_SPAN_CACHE_MIN_LENGTH) { |
| 139 | const key = hashContent(input); |
| 140 | const cached = ansiSpanCache.get(key); |
| 141 | if (cached) { |
| 142 | ansiSpanCache.delete(key); |
| 143 | ansiSpanCache.set(key, cached); |
| 144 | return cached; |
| 145 | } |
| 146 | const spans = parseToSpansUncached(input); |
| 147 | if (ansiSpanCache.size >= ANSI_SPAN_CACHE_MAX) { |
| 148 | const oldest = ansiSpanCache.keys().next().value; |
| 149 | if (oldest !== undefined) ansiSpanCache.delete(oldest); |
| 150 | } |
| 151 | ansiSpanCache.set(key, spans); |
| 152 | return spans; |
| 153 | } |
| 154 | return parseToSpansUncached(input); |
| 155 | } |
| 156 | |
| 157 | function parseToSpansUncached(input: string): Span[] { |
| 158 | const parser = new Parser(); |
no test coverage detected