diff --git a/lib/src/csv_asset_loader.dart b/lib/src/csv_asset_loader.dart index 2a7ecfb..4e6b0a2 100644 --- a/lib/src/csv_asset_loader.dart +++ b/lib/src/csv_asset_loader.dart @@ -46,6 +46,7 @@ class CSVParser { final List> lines; final String? fieldDelimiter; final String? eol; + /// Enables automatic detection of the following /// /// [eols]: '\r\n' '\n' @@ -60,21 +61,35 @@ class CSVParser { this.fieldDelimiter, this.eol, this.useAutodetect = true, - }) : lines = CsvToListConverter().convert( - csvString, - fieldDelimiter: fieldDelimiter, - eol: eol, - csvSettingsDetector: - useAutodetect && fieldDelimiter == null && eol == null - ? FirstOccurrenceSettingsDetector( - fieldDelimiters: [',', ';', '\t'], - textDelimiters: ['"', "'", '”'], - textEndDelimiters: ['"', "'", '”'], - eols: ['\r\n', '\n'], - ) - : null, + }) : lines = _convertN( + CsvToListConverter().convert( + csvString, + fieldDelimiter: fieldDelimiter, + eol: eol, + csvSettingsDetector: + useAutodetect && fieldDelimiter == null && eol == null + ? FirstOccurrenceSettingsDetector( + fieldDelimiters: [',', ';', '\t'], + textDelimiters: ['"', "'", '”'], + textEndDelimiters: ['"', "'", '”'], + eols: ['\r\n', '\n'], + ) + : null, + ), ); + static List> _convertN(List> lines) { + // converts //n to /n + lines.forEach((lineList) { + lineList.asMap().forEach((key, value) { + if ((value is String) && value.contains('\\n')) { + lineList[key] = value.replaceAll('\\n', '\n'); + } + }); + }); + return lines; + } + List getLanguages() { return lines.first.sublist(1, lines.first.length); }