/**
 * 纯文本安全换行：先 HTML 转义，再把 \n 换成 <br>
 * 用于 v-html，避免 XSS
 */
export function nl2brSafe(text) {
  if (text == null || text === '') {
    return ''
  }
  return String(text)
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;')
    .replace(/\n/g, '<br>')
}

/**
 * 展示用：兼容历史 <br>、压缩连续换行，再安全转成 <br>
 * 等价于原 .replace(/\n+/g, '\n').replace(/\n/g, '<br>')，但先转义防 XSS
 */
export function nl2brDisplay(text) {
  if (text == null || text === '') {
    return ''
  }
  const normalized = String(text)
    .replace(/<br\s*\/?>/gi, '\n')
    .replace(/\n+/g, '\n')
  return nl2brSafe(normalized)
}

/**
 * 纯文本多行展示：把历史 <br> 还原为换行，配合 white-space: pre-wrap 使用（勿再 v-html）
 */
export function plainMultilineText(text) {
  if (text == null || text === '') {
    return ''
  }
  return String(text)
    .replace(/<br\s*\/?>/gi, '\n')
    .replace(/\n+/g, '\n')
}
