// 预处理关键字（新增中文分词逻辑）
const processKeywords = (input: string) => {
	// 中文分词正则（匹配词语或英文单词）
	const cnWordSeg = input.replace(/([\p{Unified_Ideograph}\u3007])(?![\u4e00-\u9fa5])/gu, '$1 ');
	return cnWordSeg
		.split(/[\s+|,，]+/) // 支持中英文空格和逗号分隔
		.filter((kw) => kw.length >= 1) // 允许单字搜索
		.map((kw) => escapeRegExp(kw))
		.filter((v, i, a) => a.indexOf(v) === i); // 去重
};

// 增强型正则转义
const escapeRegExp = (str: string) => {
	return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
};

// 高效匹配算法（支持长词优先匹配）
const buildRegExp = (keywords: any) => {
	// 按长度降序排列，优先匹配长词
	const sortedKeys = [...keywords].sort((a, b) => b.length - a.length);
	return new RegExp(`(${sortedKeys.join('|')})`, 'gi');
};

// 高亮处理器（防止重复包裹）
const highlightText = (text: string, regex: RegExp) => {
	return text.replace(regex, (match) => {
		// 避免重复添加高亮标签
		return match.startsWith('<span>') ? match : `<span class='highlight'>${match}</span>`;
	});
};
// 高亮核心函数
const highlightTitle = (title: string, keyword: string) => {
	if (!keyword) return title;
	const keywords = processKeywords(keyword);
	if (!keywords.length) return [];
	const regex = buildRegExp(keywords);
	return highlightText(title, regex);
};

export { highlightTitle };
