* Parse OSC 21337 payload: `key=value;key=value;...` with `\;` and `\\` * escapes inside values. Bare key or `key=` clears that field; unknown * keys are ignored.
(data: string)
| 347 | * keys are ignored. |
| 348 | */ |
| 349 | function parseTabStatus(data: string): TabStatusAction { |
| 350 | const action: TabStatusAction = {} |
| 351 | for (const [key, value] of splitTabStatusPairs(data)) { |
| 352 | switch (key) { |
| 353 | case 'indicator': |
| 354 | action.indicator = value === '' ? null : parseOscColor(value) |
| 355 | break |
| 356 | case 'status': |
| 357 | action.status = value === '' ? null : value |
| 358 | break |
| 359 | case 'status-color': |
| 360 | action.statusColor = value === '' ? null : parseOscColor(value) |
| 361 | break |
| 362 | } |
| 363 | } |
| 364 | return action |
| 365 | } |
| 366 | |
| 367 | /** Split `k=v;k=v` honoring `\;` and `\\` escapes. Yields [key, unescapedValue]. */ |
| 368 | function* splitTabStatusPairs(data: string): Generator<[string, string]> { |
no test coverage detected