49 lines
1003 B
TypeScript
49 lines
1003 B
TypeScript
/**
|
|
* 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;
|