/**
 * CSV 解析公共工具（引号感知的行拆分）。
 *
 * statements.ts 和 adapters.ts 共用此模块，确保所有 CSV 适配器
 * 都能正确处理 "含,逗号" 字段。
 */

/** 引号感知的 CSV 行拆分：正确处理 "含,逗号" 字段。 */
export function splitCsvLine(line: string): string[] {
  const result: string[] = [];
  let current = '';
  let inQuotes = false;
  for (let i = 0; i < line.length; i++) {
    const ch = line[i];
    if (inQuotes) {
      if (ch === '"') {
        if (i + 1 < line.length && line[i + 1] === '"') {
          current += '"';
          i++;
        } else {
          inQuotes = false;
        }
      } else {
        current += ch;
      }
    } else {
      if (ch === '"') {
        inQuotes = true;
      } else if (ch === ',') {
        result.push(current.trim());
        current = '';
      } else {
        current += ch;
      }
    }
  }
  result.push(current.trim());
  return result;
}

/** 解析 CSV 表头行。 */
export function parseCsvHeaders(line: string): string[] {
  return splitCsvLine(line).map(v => v.replace(/^"|"$/g, ''));
}

/** 从行对象中取第一个非空值。 */
export function pickFirst(row: Record<string, string>, keys: string[]): string {
  return keys.map(k => row[k]).find(v => v && v.trim())?.trim() ?? '';
}
