28 lines
761 B
JavaScript
28 lines
761 B
JavaScript
export default function parseSafeArgs(argsStr) {
|
||
if (!argsStr.trim()) return []
|
||
|
||
// 将 ', ' 或 '(' 后的单引号字符串转换为合法 JSON 字符串
|
||
// 思路:匹配所有 '...' 并替换为 "..."
|
||
let jsonLike =
|
||
'[' +
|
||
argsStr
|
||
.replace(/\s*,\s*/g, ',') // 去掉参数间空格
|
||
.replace(/'/g, '"') + // 单引号 → 双引号
|
||
']'
|
||
|
||
try {
|
||
const parsed = JSON.parse(jsonLike)
|
||
// 确保数字不被转成字符串(JSON 会自动处理)
|
||
return parsed.map(item => {
|
||
if (typeof item === 'string') {
|
||
// 如果是 '<' 或 '>',保留字符串
|
||
return item
|
||
}
|
||
return item // number
|
||
})
|
||
} catch (e) {
|
||
console.warn('Failed to parse args:', argsStr, e)
|
||
return []
|
||
}
|
||
}
|