// 表情图片基础路径（若环境变量未定义，使用默认路径 /static/emoji/）
const EMO_BASE_URL = '/static/emoji/'

const emoTextList = [
	'憨笑', '媚眼', '开心', '坏笑', '可怜', '爱心', '笑哭', '拍手', '惊喜', '打气',
	'大哭', '流泪', '饥饿', '难受', '健身', '示爱', '色色', '眨眼', '暴怒', '惊恐',
	'思考', '头晕', '大吐', '酷笑', '翻滚', '享受', '鼻涕', '快乐', '雀跃', '微笑',
	'贪婪', '红心', '粉心', '星星', '大火', '眼睛', '音符', '叹号', '问号', '绿叶',
	'燃烧', '喇叭', '警告', '信封', '房子', '礼物', '点赞', '举手', '拍手', '点头',
	'摇头', '偷瞄', '庆祝', '疾跑', '打滚', '惊吓', '起跳'
]

const regex = /\#[\u4E00-\u9FA5]{1,3}\;/gi

/**
 * 判断文本是否包含表情标记
 * @param {string} content 文本内容
 * @returns {boolean}
 */
const containEmoji = (content) => regex.test(content)

/**
 * 将文本中的表情标记替换为 <img> 标签
 * @param {string} content 原始文本
 * @param {string} extClass 图片的 CSS 类名
 * @returns {string} 替换后的 HTML 字符串
 */
const transform = (content, extClass) => {
	return content.replace(regex, (emoText) => {
		const word = emoText.replace(/\#|\;/g, '')
		const idx = emoTextList.indexOf(word)
		if (idx === -1) return emoText
		const path = textToPath(emoText)
		return `<img src="${path}" class="${extClass}" />`
	})
}

/**
 * 根据表情标记生成图片路径
 * @param {string} emoText 表情标记，如 '#开心;'
 * @returns {string} 图片完整路径
 */
const textToPath = (emoText) => {
	const word = emoText.replace(/\#|\;/g, '')
	const idx = emoTextList.indexOf(word)
	// 若找不到对应表情，返回占位图或空字符串（此处返回原标记）
	if (idx === -1) return emoText
	return EMO_BASE_URL + idx + '.gif'
}

export default {
	containEmoji,
	emoTextList,
	transform,
	textToPath
}
