/**
 * 格式化工具函数
 */

/**
 * 清理URL字符串
 * @param {string} url - 原始URL
 * @returns {string} 清理后的URL
 */
export function cleanUrl(url) {
    const s = String(url || '').trim()
    const m = s.match(/https?:\/\/[^\s'"`]+/)
    if (m && m[0]) return m[0]
    return s.replace(/[`'"]/g, '').trim()
}

/**
 * 格式化百分比
 * @param {number} value - 百分比值
 * @returns {string}
 */
export function formatPercent(value) {
    const n = Number(value)
    if (!Number.isFinite(n)) return '0%'
    return `${n}%`
}

/**
 * 格式化日期时间
 * @param {string|number|Date} value - 日期值
 * @returns {string}
 */
export function formatDateTime(value) {
    const s = String(value || '').trim()
    if (!s) return ''
    const d = new Date(s)
    if (Number.isNaN(d.getTime())) return s
    const y = d.getFullYear()
    const m = String(d.getMonth() + 1).padStart(2, '0')
    const day = String(d.getDate()).padStart(2, '0')
    const hh = String(d.getHours()).padStart(2, '0')
    const mm = String(d.getMinutes()).padStart(2, '0')
    const ss = String(d.getSeconds()).padStart(2, '0')
    return `${y}-${m}-${day} ${hh}:${mm}:${ss}`
}

/**
 * 格式化价格（分转元）
 * @param {number} cents - 分
 * @param {number} decimals - 小数位数
 * @returns {string}
 */
export function formatPrice(cents, decimals = 2) {
    const yuan = Number(cents || 0) / 100
    return yuan.toFixed(decimals)
}

/**
 * 解析时间为毫秒戳
 * @param {any} value - 时间值
 * @returns {number|null}
 */
export function parseTimeMs(value) {
    if (value === undefined || value === null || value === '') return null
    if (typeof value === 'number') {
        if (!Number.isFinite(value)) return null
        return value < 1e12 ? value * 1000 : value
    }
    const s = String(value).trim()
    if (!s) return null
    const asNum = Number(s)
    if (Number.isFinite(asNum)) return asNum < 1e12 ? asNum * 1000 : asNum
    const d = new Date(s)
    if (Number.isNaN(d.getTime())) return null
    return d.getTime()
}
