diff --git a/src/csv-loader/loader.ts b/src/csv-loader/loader.ts index 4bac982..1d4012b 100644 --- a/src/csv-loader/loader.ts +++ b/src/csv-loader/loader.ts @@ -538,12 +538,13 @@ export interface ReverseReferenceDeclaration { */ function parseReverseReferenceDeclaration( line: string, + commentChar: string = "#", ): ReverseReferenceDeclaration | null { const trimmed = line.trim(); - // Must start with # (comment) - if (!trimmed.startsWith("#")) return null; + // Must start with the comment character + if (!trimmed.startsWith(commentChar)) return null; - const content = trimmed.slice(1).trim(); + const content = trimmed.slice(commentChar.length).trim(); // Match pattern: fieldName := ~tableName(foreignKey) const match = content.match(/^(\w+)\s*:=\s*~(\w+)\((\w+)\)(\?)?$/); @@ -793,7 +794,9 @@ export function parseCsv( quote, escape, bom, - comment: undefined, // Don't let csv-parse skip comments; we need to parse them for reverse references + // Don't let csv-parse skip comments; we need to parse them for reverse references. + // Comment lines are filtered out manually below using the configured comment character. + comment: undefined, trim, skip_empty_lines: true, relax_column_count: true, @@ -817,10 +820,10 @@ export function parseCsv( const dataRows: string[][] = []; for (let i = 2; i < records.length; i++) { const row = records[i]; - // Check if this is a single-column row starting with # (comment with reverse ref declaration) + // Check if this is a comment line (starting with the configured comment character) const firstCell = (row[0] ?? "").trim(); - if (firstCell.startsWith("#")) { - const decl = parseReverseReferenceDeclaration(firstCell); + if (comment && firstCell.startsWith(comment)) { + const decl = parseReverseReferenceDeclaration(firstCell, comment); if (decl) { reverseReferences.push(decl); } @@ -834,8 +837,8 @@ export function parseCsv( // (in case they appear as schema cells rather than separate rows) for (let col = 0; col < schemas.length; col++) { const cell = (schemas[col] ?? "").trim(); - if (cell.startsWith("#")) { - const decl = parseReverseReferenceDeclaration(cell); + if (comment && cell.startsWith(comment)) { + const decl = parseReverseReferenceDeclaration(cell, comment); if (decl) { reverseReferences.push(decl); }