(str, keys = [])
| 2357 | } |
| 2358 | |
| 2359 | function parseSurgeArgumentsDesc(str, keys = []) { |
| 2360 | str = `${str ?? ''}`.replace(/\\n/g, '\n') |
| 2361 | const map = {} |
| 2362 | const keyPattern = keys.length > 0 ? keys.map(escapeRegExp).join('|') : '[^:\\n]+' |
| 2363 | const regex = new RegExp(`(?:^|\\n)(${keyPattern}):\\s*`, 'g') |
| 2364 | const matches = [...str.matchAll(regex)] |
| 2365 | for (let i = 0; i < matches.length; i++) { |
| 2366 | const key = matches[i][1].trim() |
| 2367 | const start = matches[i].index + matches[i][0].length |
| 2368 | const end = i + 1 < matches.length ? matches[i + 1].index : str.length |
| 2369 | const value = str.slice(start, end).trim() |
| 2370 | if (key && value) map[key] = value |
| 2371 | } |
| 2372 | str.split(/\r?\n/).forEach(line => { |
| 2373 | const parsed = parseSurgeArgumentsDescLine(line, keys) |
| 2374 | if (parsed?.key && parsed?.desc && !map[parsed.key]) { |
| 2375 | map[parsed.key] = parsed.desc |
| 2376 | } |
| 2377 | }) |
| 2378 | return map |
| 2379 | } |
| 2380 | |
| 2381 | function applySurgeArgumentsDesc(args, rawDesc) { |
| 2382 | const descMap = parseSurgeArgumentsDesc( |
no test coverage detected