(s)
| 150046 | return s[0] === "[" ? parseBetween(s) : parseStream(s); |
| 150047 | } |
| 150048 | function parseBetween(s) { |
| 150049 | const n = s.length; |
| 150050 | let i = 1, b; |
| 150051 | i = find(s, i, RBRACK, LBRACK, RBRACK); |
| 150052 | if (i === n) throw "Empty between selector: " + s; |
| 150053 | b = parseMerge(s.substring(1, i)); |
| 150054 | if (b.length !== 2) throw "Between selector must have two elements: " + s; |
| 150055 | s = s.slice(i + 1).trim(); |
| 150056 | if (s[0] !== GT) throw "Expected '>' after between selector: " + s; |
| 150057 | b = b.map(parseSelector); |
| 150058 | const stream = parseSelector(s.slice(1).trim()); |
| 150059 | if (stream.between) return { |
| 150060 | between: b, |
| 150061 | stream: stream |
| 150062 | }; |
| 150063 | else stream.between = b; |
| 150064 | return stream; |
| 150065 | } |
| 150066 | function parseStream(s) { |
| 150067 | const stream = { |
| 150068 | source: DEFAULT_SOURCE |
no test coverage detected