cqcode
Version:
CQCode Helper for NodeJS.
61 lines (60 loc) • 1.67 kB
JavaScript
;
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;