UNPKG

cqcode

Version:

CQCode Helper for NodeJS.

61 lines (60 loc) 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.split = void 0; const parse_1 = require("./parse"); /** * @param { string } text 即将被寻找CQCode的字符串。 * @param { SplitProps } props 传入函数的参数。 * @return { CQCode[] } 返回寻找到的CQCode对象列表。 */ const split = (text, props) => { const { type } = props || {}; const splitRightBracketArr = text.split(']'); const splitLeftBracketArr = splitRightBracketArr.map((v, i) => { if (i < splitRightBracketArr.length - 1) { return `${v}]`; } else { return v; } }).filter((v) => v !== '').map((v) => { return v.split('['); }); const splitBracketArr = []; splitLeftBracketArr.forEach((v) => { return v.forEach((vv, i) => { if (i > 0) { splitBracketArr.push(`[${vv}`); } else { splitBracketArr.push(vv); } }); }); const cqCodeArr = []; splitBracketArr.filter((v) => v !== '').forEach((v) => { try { cqCodeArr.push((0, parse_1.parse)(v)); } catch (err) { cqCodeArr.push({ type: 'plain', data: { text: v, }, }); } }); if (type) { if (typeof type === 'string') { return cqCodeArr.filter((v) => v.type === type); } else { return cqCodeArr.filter((v) => type.includes(v.type)); } } else { return cqCodeArr; } }; exports.split = split;