|
1 | 1 | # Vince's CSV Parser |
2 | | -[](https://github.com/vincentlaucsb/csv-parser/actions/workflows/cmake-multi-platform.yml) |
3 | | - |
4 | | - * [Motivation](#motivation) |
5 | | - * [Documentation](#documentation) |
6 | | - * [Integration](#integration) |
7 | | - * [C++ Version](#c-version) |
8 | | - * [Single Header](#single-header) |
9 | | - * [CMake Instructions](#cmake-instructions) |
10 | | - * [Features & Examples](#features--examples) |
11 | | - * [Reading an Arbitrarily Large File (with Iterators)](#reading-an-arbitrarily-large-file-with-iterators) |
12 | | - * [Memory Mapped Files vs. Streams](#memory-mapped-files-vs-streams) |
13 | | - * [Indexing by Column Names](#indexing-by-column-names) |
14 | | - * [Numeric Conversions](#numeric-conversions) |
15 | | - * [Specifying the CSV Format](#specifying-the-csv-format) |
16 | | - * [Trimming Whitespace](#trimming-whitespace) |
17 | | - * [Handling Variable Numbers of Columns](#handling-variable-numbers-of-columns) |
18 | | - * [Setting Column Names](#setting-column-names) |
19 | | - * [Converting to JSON](#converting-to-json) |
20 | | - * [Parsing an In-Memory String](#parsing-an-in-memory-string) |
21 | | - * [Writing CSV Files](#writing-csv-files) |
22 | | - * [Contributing](#contributing) |
| 2 | +[](https://github.com/vincentlaucsb/csv-parser/actions/workflows/cmake-multi-platform.yml) [](https://github.com/vincentlaucsb/csv-parser/actions/workflows/sanitizers.yml) |
| 3 | + |
| 4 | +- [Vince's CSV Parser](#vinces-csv-parser) |
| 5 | + - [Motivation](#motivation) |
| 6 | + - [Performance and Memory Requirements](#performance-and-memory-requirements) |
| 7 | + - [Show me the numbers](#show-me-the-numbers) |
| 8 | + - [Robust Yet Flexible](#robust-yet-flexible) |
| 9 | + - [RFC 4180 and Beyond](#rfc-4180-and-beyond) |
| 10 | + - [Encoding](#encoding) |
| 11 | + - [Well Tested](#well-tested) |
| 12 | + - [Documentation](#documentation) |
| 13 | + - [Sponsors](#sponsors) |
| 14 | + - [Integration](#integration) |
| 15 | + - [C++ Version](#c-version) |
| 16 | + - [Single Header](#single-header) |
| 17 | + - [CMake Instructions](#cmake-instructions) |
| 18 | + - [Avoid cloning with FetchContent](#avoid-cloning-with-fetchcontent) |
| 19 | + - [Features \& Examples](#features--examples) |
| 20 | + - [Reading an Arbitrarily Large File (with Iterators)](#reading-an-arbitrarily-large-file-with-iterators) |
| 21 | + - [Memory-Mapped Files vs. Streams](#memory-mapped-files-vs-streams) |
| 22 | + - [Indexing by Column Names](#indexing-by-column-names) |
| 23 | + - [Numeric Conversions](#numeric-conversions) |
| 24 | + - [Converting to JSON](#converting-to-json) |
| 25 | + - [Specifying the CSV Format](#specifying-the-csv-format) |
| 26 | + - [Trimming Whitespace](#trimming-whitespace) |
| 27 | + - [Handling Variable Numbers of Columns](#handling-variable-numbers-of-columns) |
| 28 | + - [Setting Column Names](#setting-column-names) |
| 29 | + - [Parsing an In-Memory String](#parsing-an-in-memory-string) |
| 30 | + - [Writing CSV Files](#writing-csv-files) |
23 | 31 |
|
24 | 32 | ## Motivation |
25 | 33 | There's plenty of other CSV parsers in the wild, but I had a hard time finding what I wanted. Inspired by Python's `csv` module, I wanted a library with **simple, intuitive syntax**. Furthermore, I wanted support for special use cases such as calculating statistics on very large files. Thus, this library was created with these following goals in mind. |
@@ -54,8 +62,11 @@ This CSV parser is encoding-agnostic and will handle ANSI and UTF-8 encoded file |
54 | 62 | It does not try to decode UTF-8, except for detecting and stripping UTF-8 byte order marks. |
55 | 63 |
|
56 | 64 | ### Well Tested |
57 | | -This CSV parser has an extensive test suite and is checked for memory safety with Valgrind. If you still manage to find a bug, |
58 | | -do not hesitate to report it. |
| 65 | +This CSV parser has: |
| 66 | + * An extensive Catch2 test suite |
| 67 | + * Address, thread safety, and undefined behavior checks with ASan, TSan, and Valgrind (see [GitHub Actions](https://github.com/vincentlaucsb/csv-parser/actions)) |
| 68 | + |
| 69 | +If you still manage to find a bug, do not hesitate to report it. |
59 | 70 |
|
60 | 71 | ## Documentation |
61 | 72 |
|
|
0 commit comments