- re-ordered most of the `.inl` implementations to match the declaration order in the class body
- fixed a few missing cases of `noexcept`
- added additional operator overloads for +=
- added `operator==` and `operator!=` to `path_component`
- changed parse method to "parse into" so it could be re-used in more places without creating a temporary vector
- changed all binary operators to be 'hidden friends'
- moved the "to string" logic to a "print_to" for streams to avoid creating a temporary string in the ostream<< operator
- made the string conversion operators `explicit`
- renamed `string()` to `str()` to be consistent with `toml::key` and `std::stringstream`
- renamed `wstring()` to `wide_str()` to be consistent with `toml::source_region`
- renamed `parent_path()` to `parent()`
- removed the `const (w)char*` operator overloads - these were already sufficiently covered by the `std::(w)string_view` ones
- removed the `operator/` overloads - since we aren't a file path the `/` doesn't have the same meaning (also `operator+` was doing the same thing)
- removed submodules in `external/`
- vendored `Catch2` and `nlohmann/json directly`
- updated conformance test generator to look outside the repo for test sources
Yeah so it turns out meson supports splitting compound boolean logic over multiple lines. Duh. Of course it does.
Also enabled ubsan for CI example builds.
When building tests, Meson will now look for system dependencies and use
them if found. Otherwise, it will check if the submodules are cloned and
create a dependency object wrapping the include path of each external
dependency (this breaks Meson's sandbox, but the previous approach did
too). This also allows passing actual dependencies to the various build
targets instead of include paths (a bit more idiomatic).
I've also made it possible to skip the tl-optional tests when the lib is
not found, so that it is still possible to run tests even from a
tarball (i.e. no git checkout)
also:
- fixed extended-precision fractional times causing parse error instead of truncating per the spec (closes#127)
- fixed some non-spec vertical whitespace being accepted as line breaks (closes#128)
- added `format_flags::allow_unicode_strings`
also:
- added `date_time` converting constructors from `date` and `time`
- added `is_key<>` and is_key_or_convertible<>` metafunctions
- exposed `TOML_NAMESPACE_START` and `TOML_NAMESPACE_END` macros to help with ADL specialization scenarios
- added encoder and decoder for `toml-test` (closes#125)
also:
- fixed parser not correctly round-tripping int format in some cases
- added `TOML_ENABLE_FORMATTERS` option
- added `operator->` to `toml::value`
- refactoring
also:
- added `formatter_flags::quote_infinities_and_nans`
- made constructors for dates/times accept any integral types
- lots of internal work on formatter base (laying groundwork for more customization)