csv_plus 0.0.2
csv_plus: ^0.0.2 copied to clipboard
Fast, complete CSV parser for Dart. Encode, decode, stream, query, and validate CSV data with automatic type inference and zero dependencies.
0.0.2 #
Documentation #
- Redesigned README with hero layout, badges, feature table, and quick start examples
- Added 8 mini-library files for dartdoc sidebar navigation (core, codec, encoder, decoder, table, query, transform, io)
- Enhanced barrel export
lib/csv_plus.dartwith library modules reference
Meta #
- Added MIT LICENSE file
- SEO-optimized pubspec description and topics for pub.dev
- Added CI workflow (analyze, format, test on PRs)
- Added publish workflow (auto-tag + publish to pub.dev)
0.0.1 #
Core #
CsvConfig— immutable configuration with presets:CsvConfig(),.excel(),.tsv(),.pipe()CsvConfig.copyWith()— create modified copiesQuoteModeenum —necessary,always,stringsCsvException,CsvParseException,CsvValidationException— typed error hierarchy
Encoding #
FastEncoder— high-performance batch encoder withencode(),encodeStrings(),encodeGeneric<T>(),encodeMap()CsvEncoder— streaming encoder asStreamTransformerwithbind(),convert(),startChunkedConversion()CsvEncoder.encodeField()— static helper for single-field quoting- codeUnit-based
_needsQuoting()for multi-char delimiter support
Decoding #
FastDecoder— byte-level batch decoder withcodeUnitsparsing, labeled-loop control flow, first-byte type inference- Decode variants:
decode(),decodeStrings(),decodeFlexible(),decodeIntegers(),decodeDoubles(),decodeBooleans() CsvDecoder— chunked state-machine streaming decoder withbind(),convert(),startChunkedConversion()- Handles chunk boundaries splitting mid-field, mid-escape, mid-CRLF
DelimiterDetector— frequency/consistency scoring across candidates[, ; \t |], BOM strip,sep=hint
Facade #
CsvCodec— main API with all decode/encode methods, presets, auto-detectionCsvCodec.decodeToTable(),decodeMap(),encodeMap()CsvCodec.decoder/encoder— streaming transformer gettersCsvCodecAdapter—Codec<List<List<dynamic>>, String>fordart:convertpipelines and.fuse()csvPlus,csvExcel,csvTsv— global convenience instances
CsvTable (50+ methods) #
- Constructors:
CsvTable(),.withHeaders(),.fromData(),.fromMaps(),.parse(),.empty() - Access:
operator [],cell(),cellByName(),setCell(),setCellByName(),column(),columnAt(),getColumn(),getColumnAt() - Row ops:
addRow(),addRowFromMap(),addRows(),insertRow(),removeRow(),removeWhere() - Column ops:
addColumn(),insertColumn(),removeColumn(),removeColumnAt(),renameColumn(),reorderColumns() - Query:
where(),firstWhere(),any(),every(),range(),take(),skip(),distinct() - Sort:
sortBy(),sortByIndex(),sortByMultiple(),sort() - Transform:
transformColumn(),map(),fold<T>() - Aggregate:
count(),sum(),avg(),min(),max(),groupBy() - Export:
toList(),toMaps(),toCsv(),toString(),toFormattedString(),copy() - Validation:
validate(),conformsTo(),inferSchema()
CsvRow #
- Dual-mode access:
row[0](int) androw['name'](String) set(),headerMap,hasHeaders,headers,containsHeader(),toMap(),getHeaderName(),toString()
CsvColumn #
- Column descriptor with
name,index,values,inferredType,nonNullCount,nullCount,uniqueCount
CsvSchema & ColumnDef #
- Schema definition with
columns,allowExtraColumns,allowMissingColumns CsvSchema.infer()— infer types and nullability from datavalidate()— check required columns, types, nullability, patterns, custom validatorsColumnDefwithname,type,required,nullable,pattern,validator
CsvFile (dart:io) #
- Static methods:
read(),readSync(),stream(),write(),writeSync(),writeRows(),writeStream(),append() - Uses
utf8.decoderfor stream operations - Isolated in
io/csv_file.dart— core library stays platform-independent