update README

This commit is contained in:
ado 2021-02-27 20:54:34 +01:00
parent ec252c5337
commit ac2f18c2f2

View File

@ -60,7 +60,6 @@ Bill (Heath) Gates 65 3.3
# Features # Features
* [Works on any type](#Custom-conversions) * [Works on any type](#Custom-conversions)
* Easy to use * Easy to use
* Fast
* No exceptions * No exceptions
* [Works with quotes, escapes and spacings](#Setup) * [Works with quotes, escapes and spacings](#Setup)
* [Works with values containing new lines](#Multiline) * [Works with values containing new lines](#Multiline)
@ -69,9 +68,10 @@ Bill (Heath) Gates 65 3.3
* Can return whole objects composed of converted values * Can return whole objects composed of converted values
* [Descriptive error handling can be enabled](#Error-handling) * [Descriptive error handling can be enabled](#Error-handling)
* [Restrictions can be added for each column](#Restrictions) * [Restrictions can be added for each column](#Restrictions)
* [Works with `std::optional` and `std::variant`]($Special-types) * [Works with `std::optional` and `std::variant`](#Special-types)
* Works with **CRLF** and **LF** * Works with **CRLF** and **LF**
* [Conversions can be chained if invalid](#Substitute-conversions) * [Conversions can be chained if invalid](#Substitute-conversions)
* Fast
# Installation # Installation
@ -355,7 +355,7 @@ The shape enum will be used in an example below. The **inline** is there just to
## Error handling ## Error handling
Detailed error messages can be accessed via the **error_msg** method, and to enable them ss::string_error needs to be included in the setup. If **ss::string_error** is not defined, the **error_msg** method will not be defined. Detailed error messages can be accessed via the **error_msg** method, and to enable them **ss::string_error** needs to be included in the setup. If **ss::string_error** is not defined, the **error_msg** method will not be defined either.
```cpp ```cpp
const std::string& parser::error_msg(); const std::string& parser::error_msg();
@ -430,7 +430,7 @@ while (!p.eof()) {
``` ```
It is quite hard to make an error this way since most things will be checked at compile time. It is quite hard to make an error this way since most things will be checked at compile time.
The **try_next** method works in a similar way as **get_next** but returns a **composit** which holds a **tuple** with an **optional** to the **tuple** returned by **get_next**. This **composite** has an **or_else** method (looks a bit like tl::expected) which is able to try additional conversions if the previous failed. **or_else** also returns a **composite**, but in its tuple is the **optional** to the **tuple** of the previous conversions and an **optional** to the **tuple** of the new conversion. (sounds more complicated than it is. The **try_next** method works in a similar way as **get_next** but returns a **composit** which holds a **tuple** with an **optional** to the **tuple** returned by **get_next**. This **composite** has an **or_else** method (looks a bit like **tl::expected**) which is able to try additional conversions if the previous failed. **or_else** also returns a **composite**, but in its tuple is the **optional** to the **tuple** of the previous conversions and an **optional** to the **tuple** of the new conversion. (sounds more complicated than it is.
To fetch the **tuple** from the **composite** the **values** method is used. The value of the above used conversion would look something like this: To fetch the **tuple** from the **composite** the **values** method is used. The value of the above used conversion would look something like this:
```cpp ```cpp