UNPKG

sakti-parser-fa

Version:

Simple TypeScript library for parsing Indonesian government budget Excel files (Sakti FA)

67 lines 2.27 kB
/** * Simple formatter for SAKTI parse results */ export class SaktiFormatter { /** * Format parse result to JSON or CSV */ format(result, options = {}) { const { format = 'json', includeMetadata = true } = options; if (format === 'csv') { return this.toCSV(result, includeMetadata); } return this.toJSON(result, includeMetadata); } toJSON(result, includeMetadata) { const output = { data: result.data }; if (includeMetadata) { output.metadata = result.metadata; } return JSON.stringify(output, null, 2); } toCSV(result, includeMetadata) { const lines = []; // Add metadata as comments if requested if (includeMetadata) { lines.push(`# ${result.metadata.judul}`); lines.push(`# Periode: ${result.metadata.periode_text}`); lines.push(`# Kementerian: ${result.metadata.kementerian_kode} - ${result.metadata.kementerian_nama}`); lines.push(''); } // CSV headers const headers = [ '_level', '_parent', 'mata_anggaran', 'level_1_kode', 'level_1_uraian', 'level_2_kode', 'level_2_uraian', 'level_3_kode', 'level_3_uraian', 'level_4_kode', 'level_4_uraian', 'level_5_kode', 'level_5_uraian', 'level_6_kode', 'level_6_uraian', 'level_7_kode', 'level_7_uraian', 'level_8_kode', 'level_8_uraian', 'level_9_kode', 'level_9_uraian', 'level_10_kode', 'level_10_uraian', 'level_11_kode', 'level_11_uraian', 'nilai_rupiah', 'nilai_total' ]; lines.push(headers.join(',')); // CSV data result.data.forEach(row => { const values = headers.map(header => { const value = row[header]; if (typeof value === 'string' && value.includes(',')) { return `"${value}"`; } return value || ''; }); lines.push(values.join(',')); }); return lines.join('\\n'); } } //# sourceMappingURL=formatter.js.map