/**
 * 商品标题处理工具
 *
 * 背景：后端返回的 goodName 常包含「前半段品牌/系列 + 空格 + 后半段 SKU/描述」，
 *      首页/列表页卡片空间有限，只显示空格前的前半部分。
 */

/**
 * 截断商品标题：返回第一个空格（或全角空格）之前的内容。
 * - 防错：null/undefined/非字符串/空串 → 返回 ''
 * - 没有空格 → 原样返回（去掉首尾空白后）
 * - 多个连续空格 → 只看第一个
 * - 全角空格 "　" 也视为空格
 *
 * @param {string | any} title 原始商品标题（goodName）
 * @returns {string} 截断后的标题
 */
function truncateProductTitle(title) {
  if (title == null) return ''
  if (typeof title !== 'string') {
    try {
      title = String(title)
    } catch (e) {
      return ''
    }
  }
  // 去掉首尾空白
  const s = title.trim()
  if (!s) return ''

  // 找第一个空格（半角 / 全角 / Tab / NBSP 都算）
  const match = s.match(/[\s\u3000\u00a0]/)
  if (!match) return s
  const idx = match.index
  if (idx <= 0) return s
  return s.slice(0, idx)
}

module.exports = {
  truncateProductTitle
}
