/**
 * Formatter - 输出格式化
 */

const { OUTPUT_FORMATS } = require('./config');

class Formatter {
  constructor() {
    this.formats = OUTPUT_FORMATS;
  }

  /**
   * 格式化单张卡
   * @param {Object} card - 卡信息
   * @param {string} format - 格式类型
   * @returns {string}
   */
  format(card, format = 'pipe') {
    const formatter = this.formats[format];
    if (!formatter) {
      throw new Error(`Unknown format: ${format}`);
    }
    return formatter.formatter(card);
  }

  /**
   * 格式化多张卡
   * @param {Array} cards - 卡信息数组
   * @param {string} format - 格式类型
   * @returns {string}
   */
  formatBatch(cards, format = 'pipe') {
    return cards.map(card => this.format(card, format)).join('\n');
  }

  /**
   * 获取所有支持的格式
   * @returns {Array}
   */
  getSupportedFormats() {
    return Object.keys(this.formats).map(key => ({
      id: key,
      name: this.formats[key].name
    }));
  }
}

module.exports = Formatter;
