/**
 * 展示层格式化（无 i18n 框架依赖，供 UI / Canvas 文案使用）
 */

/** 适龄文案，如 3-5岁 */
export function formatAgeRangeLabel(minAge: number, maxAge: number): string {
    return `${minAge}-${maxAge}岁`;
}

/** 比较符号（全角，与现有比大小题型一致） */
export function formatCompareSymbol(
    relation: 'gt' | 'lt' | 'eq',
): '＞' | '＜' | '＝' {
    switch (relation) {
        case 'gt':
            return '＞';
        case 'lt':
            return '＜';
        default:
            return '＝';
    }
}

/** 数字左侧补零，如 padLeadingZero(3, 2) => "03" */
export function padLeadingZero(num: number, width: number): string {
    const s = String(Math.trunc(Math.abs(num)));
    if (s.length >= width) return num < 0 ? `-${s}` : s;
    const pad = '0'.repeat(width - s.length);
    return num < 0 ? `-${pad}${s}` : `${pad}${s}`;
}

/** 截断过长字符串 */
export function truncateText(
    text: string,
    maxChars: number,
    ellipsis = '…',
): string {
    if (text.length <= maxChars) return text;
    const cut = Math.max(0, maxChars - ellipsis.length);
    return text.slice(0, cut) + ellipsis;
}

/** 非负整数千分位（中文场景常用逗号或空格，此处用半角逗号） */
export function formatThousands(n: number): string {
    const i = Math.trunc(n);
    if (i < 0) return `-${formatThousands(-i)}`;
    return String(i).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
