| 702 | } |
| 703 | |
| 704 | function splitByComma(s: string) { |
| 705 | const result = [] |
| 706 | const stack = [] |
| 707 | let start = 0 |
| 708 | for (let i = 0; i < s.length; i++) { |
| 709 | if (s[i] === '{' || s[i] === '[') { |
| 710 | stack.push(s[i] === '{' ? '}' : ']') |
| 711 | } |
| 712 | else if (s[i] === stack.at(-1)) { |
| 713 | stack.pop() |
| 714 | } |
| 715 | else if (!stack.length && s[i] === ',') { |
| 716 | const token = s.substring(start, i).trim() |
| 717 | if (token) { |
| 718 | result.push(token) |
| 719 | } |
| 720 | start = i + 1 |
| 721 | } |
| 722 | } |
| 723 | const lastToken = s.substring(start).trim() |
| 724 | if (lastToken) { |
| 725 | result.push(lastToken) |
| 726 | } |
| 727 | return result |
| 728 | } |