ToruNiina
65124a8d2e
refactor: use is_something instead of is(...)
...
to reduce the code size a bit
2019-05-29 21:20:22 +09:00
ToruNiina
1b78f161f5
refactor: use is_something/as_something in parser
...
this reduces the size of the code. And also it skips needless
double-checking, so we can expect it makes parsing a bit faster.
2019-05-29 21:18:17 +09:00
ToruNiina
0ce259ada0
refactor: split throw_bad_cast from value::cast
2019-05-29 21:06:25 +09:00
ToruNiina
74da49f87f
refactor: move switch_cast from inside of value
...
use as_something() instead of it. To realize this, the implementation of
as_something() is also changed. Now as_something does not depends on
`cast`. This reduces complexity around casting toml::value to other types.
2019-05-29 20:18:15 +09:00
Ivan Shynkarenka
db6f3d5d11
Fix Visual Studio 2019 warnings in pedantic compilation mode (/W4 /WX)
2019-05-10 14:58:22 +03:00
ToruNiina
87be890e07
feat: remove deprecated functions
2019-04-28 15:59:09 +09:00
ToruNiina
4cbbcd8f62
Merge branch 'master' into as-something
2019-04-27 19:04:44 +09:00
Toru Niina
a2631ecacb
Merge pull request #60 from ToruNiina/string-view
...
support std::string_view
2019-04-27 18:33:59 +09:00
ToruNiina
4bcc5e8375
Merge branch 'master' into as-something
2019-04-27 17:42:12 +09:00
ToruNiina
aa7b9a3965
refactor: rename as_floating -> as_float
...
Actually, since `floating` is used for toml::types, `as_floating`
seems to be clearer. But currently `is_*` functions uses `float`,
not `floating`, so `as_float` is chosen for the consistency.
In a future release, possibly v3, those names may need to be
re-considered for clarity.
2019-04-27 16:45:25 +09:00
ToruNiina
0d623856a7
feat: add value::as_something() for convenience
2019-04-27 16:22:23 +09:00
ToruNiina
01aa2ef5b2
feat: add ctor to value to init with string_view
2019-04-26 16:33:09 +09:00
ToruNiina
e460826084
feat: enable to get a comment related to a value
...
- comment_before(): get comments just before a value.
- comment_inline(): get a comment in the same line as a value.
- comment(): get comment_before() + comment_inline().
2019-04-25 22:32:39 +09:00
ToruNiina
aa3445f38c
feat: add functions to get comments around region
2019-04-25 22:32:18 +09:00
ToruNiina
408b7bf35e
Merge branch 'master' into string-view
2019-04-23 23:32:08 +09:00
ToruNiina
d061c33a16
feat: enable toml::get with std::string_view
2019-04-23 23:24:23 +09:00
ToruNiina
0c7d2d07d4
feat: do not consider string_view as a container
...
it is a kind of string.
2019-04-23 23:23:57 +09:00
ToruNiina
62cf4373bd
feat: conversion toml::string <-> string_view
2019-04-22 23:18:05 +09:00
ToruNiina
2d9b4992ec
fix: restrict length of underline by size of line
...
in some cases, `region` contains several lines and `region::size`
returns the whole size that is a sum of lengthes of all the lines.
To avoid too long underlines, restrict the length of underline by
the length of the line that is shown in the message.
2019-04-21 16:38:08 +09:00
ToruNiina
82e8c1e68b
fix: skip first ws/newlines in toml literal
...
when ""_toml literal is used with C++11 raw-string literal,
it normally starts with newline like the following.
```cpp
const auto v = u8R"(
[table]
key = "value"
)"_toml;
```
With this, the error message shows the first empty line that starts just
after `u8R"(` and thus the error message shows nothing. To avoid this,
skip the first empty lines and whitespaces in literal.
2019-04-21 16:31:24 +09:00
ToruNiina
46be054ce9
fix: improve err msg for multiline inline table
...
show "missing curly brace" instead of "missing table key-value separator"
2019-04-19 13:22:13 +09:00
ToruNiina
637c99d637
refactor: generate error message in parser
2019-04-18 15:09:58 +09:00
ToruNiina
0f48852730
perf: check value type before parsing
...
to avoid needless error message generation
2019-04-18 14:26:27 +09:00
ToruNiina
0499b2907d
Merge branch 'master' into optimization
2019-04-18 14:10:08 +09:00
ToruNiina
61e69c9251
fix: count line number from 1, not 0
2019-04-18 13:56:19 +09:00
ToruNiina
4a560ea1e5
fix: show correct error message
2019-04-18 00:04:33 +09:00
ToruNiina
c5b6ee6f81
feat: add yet another constructor to value
...
to make implementation of parse_value easier
2019-04-17 23:43:42 +09:00
ToruNiina
1a7bf63622
Merge branch 'master' into optimization
2019-04-17 14:58:28 +09:00
ToruNiina
c82e76a111
perf: check string type before parsing it
...
to avoid unncessary error message generation, check the first some
characters before parsing it. It makes parsing process faster and
is also helpful to generate more accurate error messages.
2019-04-16 21:47:24 +09:00
ToruNiina
4db486d76d
perf: check integer prefix before trying to parse
...
all the parsers generate error messages and error message generation is
not a lightweight task. It concatenates a lot of strings, it formats
many values, etc. To avoid useless error-message generation, first check
which prefix is used and then parse special integers. Additionally, by
checking that, the quality of the error message can be improved (later).
2019-04-16 21:37:12 +09:00
ToruNiina
91966a6917
perf: do not use concat_string if it is not needed
...
At the earlier stage of the development, I thought that it is useful if
lexer-combinators generate error messages, because by doing this,
parser would not need to generate an error message. But now it turned
out that to show an appropriate error message, parser need to generate
according to the context. And almost all the messages from lexer are
discarded. So I added another parameter to lexer-combinator to suppress
error message generation. In the future, we may want to remove messages
completely from lexers, but currently I will keep it. Removing those
unused message generation makes the parsing process faster.
2019-04-16 21:09:59 +09:00
ToruNiina
b3917aaadf
refactor: use snprintf to show char in hex
...
instead of std::ostringstream.
2019-04-16 20:54:29 +09:00
Petr Benes
ba307003c4
fix /W4 warnings on MSVC
2019-04-16 13:25:45 +02:00
ToruNiina
6c2a536fa5
fix: check literal has a table or an array first
...
The literal like this `"[[table]]"_toml` caused a syntax error. It is
because the literal parser first check that it might be a bare value
without a key, and parse_array directory throws syntax_error. This
change makes the parser first check a literal is a name of table, and
then parse the content.
2019-04-14 19:48:43 +09:00
ToruNiina
6f950c9ec8
perf: cache current line number in location
...
`location::line_num()` function used to be implemented by using
`std::count`, so each time the parser encounters a type mismatch,
`std::count` was called with almost whole file. It decelerates the
parsing process too much, so I decided to add `line_number_` member
variable to `location` and add `advance/retrace/reset` to `location`
in order to modify the position that is pointed.
2019-04-12 18:32:46 +09:00
ToruNiina
ea13e40889
feat: add static_assert for location/range
...
to check the container is randomly-accessible
2019-04-12 18:00:53 +09:00
ToruNiina
595fb1aef3
refactor: remove unused function parameter names
2019-04-06 19:39:13 +09:00
ToruNiina
5aebd6b562
fix: restore the back compat of format_error
...
the following code was okay in the last release
```
toml::format_error("[test]", v, "test", {"hint1", "hint2"})
```
but was not okay in the current master. This commit fixes this.
cons: By this, the number of values to show is limited upto 3.
2019-03-20 20:46:22 +09:00
ToruNiina
4c13085b35
fix: add stream operator for toml::table
2019-03-20 19:30:08 +09:00
Toru Niina
65b10b6537
Merge pull request #46 from ToruNiina/toml-literal
...
feat: add ""_toml literal
2019-03-20 10:12:56 +09:00
ToruNiina
20ba57e389
fix: add missing const specifier to some of get()s
2019-03-20 00:37:13 +09:00
ToruNiina
40ccf1d912
feat: add argument to control top-level inlinization
2019-03-19 23:25:26 +09:00
ToruNiina
982ae36428
feat: add ""_toml literal
2019-03-19 21:34:57 +09:00
ToruNiina
d6714ec450
feat: detect value type and format as a file
...
in toml::format
2019-03-19 21:24:51 +09:00
ToruNiina
7a0ecf977d
feat: add find_or(table, key, fallback)
...
get_or(value, fallback) is still ok, but get_or(table, key, fallback)
is now deprecated.
2019-03-18 17:44:03 +09:00
ToruNiina
aade704411
refactor: remove needless overload of get_or
2019-03-18 17:10:18 +09:00
ToruNiina
ca3f6102ef
fix: correctly resolve overloads of get_or
2019-03-18 16:44:36 +09:00
ToruNiina
4a58b629ce
feat: add a way to check arg is "string literal"
2019-03-18 16:31:12 +09:00
ToruNiina
3adba237b8
feat: enable to show message for deprecated()
2019-03-18 16:28:27 +09:00
ToruNiina
f40fd12e25
refactor: add and rewrite comments
2019-03-18 11:09:12 +09:00
ToruNiina
65c2c3c238
fix: correctly deduce return value of visitor
2019-03-18 10:53:04 +09:00
ToruNiina
891a61a5e3
fix: do not move array element without checking
2019-03-18 02:05:55 +09:00
ToruNiina
243f43fafd
Merge branch 'master' into hotfix
2019-03-17 21:16:37 +09:00
ToruNiina
66e27a94b6
fix: simplify and correct the format of timezone
2019-03-17 21:14:17 +09:00
Toru Niina
f3e3000d45
Merge pull request #40 from ToruNiina/remove-to-toml
...
refactor: remove to_toml and related tests
2019-03-17 13:12:30 +09:00
Toru Niina
f7380c6e32
Merge pull request #39 from ToruNiina/throw-incorrect-unicode
...
Throw syntax_error when parser encounter an incorrect utf-8 codepoint
2019-03-17 13:12:16 +09:00
Toru Niina
d86870e038
Merge pull request #38 from ToruNiina/get-any-type
...
extended conversions
2019-03-17 13:11:59 +09:00
Toru Niina
0908806915
Merge pull request #33 from ToruNiina/is-something
...
add `is_boolean` and other stuffs like that
2019-03-16 23:55:01 +09:00
ToruNiina
d17c192681
refactor: remove to_toml and related tests
2019-03-16 17:05:58 +09:00
ToruNiina
43014c6619
fix: remove redefined default template argument
2019-03-16 16:24:10 +09:00
ToruNiina
04bfeba3f2
merge branch master into get-any-type
2019-03-16 15:58:18 +09:00
ToruNiina
190636b791
fix: support getting a container of external types
2019-03-16 15:52:22 +09:00
ToruNiina
b1b72a94a8
feat: support conversion with external types
2019-03-16 14:44:04 +09:00
ToruNiina
6929bcdf78
feat: add from<T> and into<T>
2019-03-16 14:27:05 +09:00
ToruNiina
fd063af7ce
refactor: make include guard style uniform
2019-03-16 14:19:47 +09:00
ToruNiina
df6dcbc4ed
feat: check a class has from/into_toml member fn
...
to support better serialization
2019-03-16 14:16:31 +09:00
ToruNiina
9b8db6a225
fix: remove extraneous null character after float
...
the bug was introduced by snprintf
2019-03-15 19:30:36 +09:00
ToruNiina
76863cb27f
refactor: simplify branches about utf8 codepoint
2019-03-15 17:48:47 +09:00
ToruNiina
514df99e40
feat: consider invalid UTF-8 as syntax_error
...
the following codepoints are considered to be a syntax_error
- [0xD800, 0xDFFF]
- larger than 0x10FFFF
2019-03-15 17:39:31 +09:00
ToruNiina
055353a460
chore: merge branch 'master' into is-something
2019-03-15 17:25:17 +09:00
ToruNiina
a04544637b
feat: mark to_toml as deprecated
...
because the constructor of `toml::value()` supports all the stuff that
are supported by `to_toml`.
2019-03-15 14:29:32 +09:00
ToruNiina
61dfa4a2dc
feat: format any number of values into an err msg
...
```cpp
toml::format_error("[error] message", v1, "v1", v2, "v2", ...);
```
2019-03-15 12:38:37 +09:00
ToruNiina
0babe8d589
fix: use format_underline for N regions everywhere
2019-03-14 00:59:10 +09:00
ToruNiina
5b2ce26721
refactor: remove redundant function
...
since N region format_underline() has been implemented, overloads for 1
and 2 region(s) are not needed.
2019-03-14 00:56:35 +09:00
ToruNiina
74ceceef73
fix: suppress warning about sign-unsign comparison
...
The solution is not ideal, but it's okay at the line
2019-03-13 14:03:04 +09:00
ToruNiina
46b35870c5
style: remove needless type casting
2019-03-13 01:17:27 +09:00
ToruNiina
dddcecb034
fix: use snprintf instead of stringstream
...
to avoid the effect of locale
2019-03-12 23:37:46 +09:00
ToruNiina
dc112bd6c1
feat: add is_[boolean|integer|...]() member func
...
it is an alias to is<toml::value_t::[Boolean|Integer|...]>
2019-03-12 20:43:07 +09:00
ToruNiina
d90ffb63c6
Merge branch 'master' into allow-deeper-table-before
2019-03-05 23:27:11 +09:00
ToruNiina
b0ed122214
fix: allow deeper table appeared before
...
allow the following toml file.
```toml
[a.b.c]
d = 10
[a]
e = 2.718
```
2019-03-05 23:25:25 +09:00
ToruNiina
d88521d63c
feat: enable to change region of value
...
To allow the following toml file, we need to replace the region after
the more precise region is found.
```toml
[a.b.c]
d = 42
[a]
e = 2.71
```
If the precise region (here, [a]) is found, the region of `a` should be
`[a]`, not `[a.b.c]`. After `[a]` is defined, toml does not allow to
write `[a]` twice. To check it, we need to replace the region of values
to the precise one.
2019-03-04 15:01:28 +09:00
ToruNiina
2accc9d22c
fix: diagnose, but not throw for unicode error
...
in 2.0.x and 2.1.0, README says "it shows warning" for invalid unicode
codepoints. So far, this library just show an error message in stderr
for this case. It is not good to change the behavior fatal in the next
minor release, 2.1.1, that includes patches and improved error msgs.
I will make it throw syntax_error after 2.2.0 for invalid unicode
codepoints. For now, I will keep it to be "warning".
2019-03-03 18:56:45 +09:00
ToruNiina
ae793fb631
feat: improve error message for invalid array
2019-03-02 17:56:16 +09:00
ToruNiina
944b83642a
feat: make location to inherit region_base
...
To generate error message, it is better to have the same interface.
Also, location can be considered as a region having only one character.
2019-03-02 17:52:00 +09:00
ToruNiina
7f870d5861
fix: diagnose invalid UTF-8 codepoints
2019-03-02 01:57:05 +09:00
ToruNiina
536b23dc84
fix: allow empty table in the middle of a file
2019-03-01 22:53:16 +09:00
ToruNiina
0c9806e99f
fix: diagnose key after [table.key] pattern
...
the following is not a valid toml format.
```
[table] key = "value"
```
this commit enables to diagnose that pattern.
2019-03-01 22:37:52 +09:00
ToruNiina
5a92932019
fix: disallow invalid escape sequence
2019-03-01 22:13:32 +09:00
ToruNiina
e929d2f00f
fix: allow empty input file (to be an empty table)
2019-02-27 12:30:57 +09:00
ToruNiina
d0726db473
chore: merge branch master into err-msg-dotted-key
2019-02-27 01:26:36 +09:00
ToruNiina
b36fdf2f54
refactor: remove internal fn not needed any more
...
The function was needed to copy region information from value to value,
for a useful error message. Because of the last few commits, the region
information about keys are passed to insert_nested_keys that requires
the function which is removed. And it turned out that the function is no
longer required. It is originally a workaround, so I removed it.
2019-02-27 01:07:00 +09:00
ToruNiina
73ba6b385f
feat: use key-region to represent table
...
use x.y.z = 42
~~~ here as the region of the table `x.y`
2019-02-27 01:02:39 +09:00
ToruNiina
30d1639aa4
refactor: return region info from parse_kvpair
2019-02-27 00:21:05 +09:00
Quentin Khan
d82814fc86
Add location to error string in parse_* functions
2019-02-26 14:56:58 +01:00
ToruNiina
679b365cf7
feat: get region info when parsing keys
...
Error messages related to dotted keys looks weird. like:
1 | a.b.c = 42
| ~~ in this table
The underlined token is not a table. This should be like the following.
1 | a.b.c = 42
| ~~~ in this table
To implement this, the region information is needed when the keys are
read. This commit add this functionality, though currently the region
information is not used yet.
2019-02-26 00:17:28 +09:00
ToruNiina
83bf83b6dd
style: add braces to if and remove additional else
2019-02-19 02:56:15 +09:00
ToruNiina
321364c7c2
fix: format char in an error message correctly
2019-02-19 02:46:48 +09:00
ToruNiina
2dd0a78c52
fix: reset stream width before printing
...
without this, the first line of the serialized result becomes too wide
2019-02-16 23:55:19 +09:00
Toru Niina
d7b8c3c78f
Merge pull request #18 from ToruNiina/threadsafe-localtime
...
add threadsafe localtime_(s|r)
2019-02-16 23:28:48 +09:00
ToruNiina
a00a906482
fix: add comma at correct position
2019-02-14 16:17:32 +09:00
ToruNiina
19ad7d7c96
fix: remove needless empty line from serialization
2019-02-14 16:17:04 +09:00
ToruNiina
251e55da42
fix: don't ignore std::setw(0)
2019-02-14 15:49:27 +09:00
ToruNiina
32f1b2060a
fix: avoid width overflow
2019-02-14 15:49:13 +09:00
ToruNiina
b1c54532df
feat: improve array serialization
...
- make multiline array more clean
- short-circuit for empty array
2019-02-14 15:48:05 +09:00
ToruNiina
38c67f16e8
fix: initialize float precition correctly
2019-02-14 15:47:00 +09:00
ToruNiina
31193d99ba
Merge branch 'master' into serialize
2019-02-13 23:16:39 +09:00
ToruNiina
dd9319245e
fix: open file as binary-mode #16
...
to avoid inconsistency between file size (obtained by tellg) and the
size of the actual contents that would be read later
2019-02-13 19:18:09 +09:00
ToruNiina
5bdc022627
fix: correctly serialize quoted keys
2019-02-13 13:51:08 +09:00
ToruNiina
41e354f1ee
supress warnings while skipping switch-cases
2019-02-13 13:50:33 +09:00
ToruNiina
d1c76709b0
add serializer #23
2019-02-13 13:37:58 +09:00
ToruNiina
64774a8db0
add toml::visit to use it in serializer
2019-02-13 13:36:55 +09:00
ToruNiina
53f6b8268b
fix: compare offset_datetime correctly
2019-02-13 13:34:26 +09:00
ToruNiina
32dcc35918
move return_type_of_t from result to traits
2019-02-13 13:34:03 +09:00
Quentin Khan
1dfe32acd8
Fix multiple definition error
2019-01-30 17:06:23 +01:00
Toru Niina
5dfdbe4bff
Merge pull request #20 from ToruNiina/format-error
...
add an extra parameter `hints` to format_error
2018-12-27 20:34:53 +09:00
ToruNiina
aa67069387
move hints to the internal function
2018-12-27 16:32:20 +09:00
ToruNiina
ee3424ad51
add an extra parameter hints
to format_error
2018-12-27 16:26:23 +09:00
ToruNiina
17def14ab6
add default template arg to toml::find
...
in most of the use cases, toml::value is used (to show error message).
2018-12-27 15:58:50 +09:00
ToruNiina
51dd3abcae
remove one branch by preprocessor
...
since localtime in windows is already thread-safe, there are no need to
change the function.
2018-12-26 13:38:01 +09:00
ToruNiina
825b2c30a1
add threadsafe localtime_(s|r)
2018-12-25 22:40:52 +09:00
Toru Niina
b5b8830c29
Merge pull request #17 from ToruNiina/hotfix
...
fix the error with BOM and end of file w/o newline
2018-12-24 16:37:10 +09:00
ToruNiina
11c7ee4501
fix the case of file w/o newline at the end
...
toml::parse failed with the file that contains whitespace or comment at
the end of file without newline. this commit fixes the error.
2018-12-24 16:00:33 +09:00
ToruNiina
d24a188d4c
fix the error while reading BOM.
...
remove possible UB because of the use-after-move.
2018-12-24 15:06:26 +09:00
ToruNiina
7c03c446fe
speedup by removing needless format_underline
...
drastical speedup for long toml files
2018-12-23 15:22:12 +09:00
ToruNiina
5546b3389d
Merge branch 'master' into error-message
2018-12-22 17:55:59 +09:00
ToruNiina
9c95992dad
fix error message for empty value
2018-12-22 17:44:09 +09:00
ToruNiina
c63ac7e435
detect syntax_error; appending array-of-tables
...
toml file like the following is explicitly prohibited.
a = [{b = 1}]
[[a]]
b = 2
this commit detects this kind of syntax-error while parsing toml file
2018-12-22 17:07:06 +09:00
ToruNiina
fec49aaaa3
fix error message: add missing spaces
2018-12-22 17:06:36 +09:00
ToruNiina
e3217cd572
quit returning rvalue ref from unwrap_or
2018-12-17 23:17:45 +09:00
ToruNiina
24723226f1
remove template argument from result::unwrap_or
2018-12-17 19:18:16 +09:00
ToruNiina
7b3684b54e
add and_other and or_other to toml::result
...
effectively same as Rust's std::Result::and and or.
2018-12-17 18:24:41 +09:00
ToruNiina
13c1f9c259
output filename of the second value2 if different
...
in format_error.
2018-12-17 18:07:57 +09:00
ToruNiina
74fc70cfee
return copied object from except
...
having reference makes some technical difficulties.
2018-12-17 10:57:40 +09:00
Toru Niina
91ac2debce
Merge pull request #12 from ToruNiina/hotfix
...
enable to get toml::value as toml::value
2018-12-17 10:50:05 +09:00
ToruNiina
ab41e7acb9
enable to pass 2 value and change interface for clarity
2018-12-16 21:50:18 +09:00
ToruNiina
c15bc8df4a
add format_error(toml::value, msg, comment)
2018-12-16 21:46:32 +09:00
ToruNiina
c2e733a65d
enable to get toml::value as toml::value
2018-12-16 20:50:40 +09:00
ToruNiina
0c08b9e940
fix typo
2018-12-15 22:02:46 +09:00
ToruNiina
fd21d5dd95
add simplest copyright notice
2018-12-13 20:44:10 +09:00
ToruNiina
57de57a1de
improve error message for empty value
2018-12-13 20:37:40 +09:00
ToruNiina
e86777d19c
improve error message for conflicting tables
2018-12-13 20:17:57 +09:00
ToruNiina
e79069cc47
enable to show err msg for invalid insertion
...
like, with the following (invalid) toml file
> a.b = "value"
> a.b.c = 42
The error message becomes
> terminate called after throwing an instance of 'toml::syntax_error'
> what(): [error] toml::insert_value: target (a.b) is neither table nor
> an array of tables
> --> example.toml
> 1 | a.b = "value"
> | ~~~~~~~ actual type is string
> ...
> 2 | a.b.c = 42
> | ~~ inserting this
2018-12-13 17:09:38 +09:00
ToruNiina
f60e93c36f
enable to assign value keeping region info
2018-12-13 17:07:26 +09:00
ToruNiina
e5c29c2870
enable to show err msg for 2 different location
2018-12-13 17:07:03 +09:00
ToruNiina
acc7b7870f
remove format_error_for_value and add get_region instead
...
it is convenient to have get_region function that can access region_info
in toml::value. get_region is placed in toml::detail and made friend of
toml::value because I don't want to make toml::value::region_info public
and keep it internal use only.
2018-12-13 16:13:05 +09:00
ToruNiina
5125287ac7
fix datetime conversion
...
use internal duration type in std::chrono::system_clock::time_point
2018-12-13 14:57:42 +09:00
ToruNiina
26e0d87d3b
enable nanoseconds in datetimes
2018-12-13 12:49:53 +09:00
ToruNiina
514f3c773f
set test_from_toml
2018-12-13 02:24:03 +09:00
ToruNiina
27a80b1214
rename get(table, key) to find()
2018-12-13 02:00:13 +09:00
ToruNiina
affa159c82
add get_or(value, key, opt)
2018-12-13 01:29:23 +09:00
ToruNiina
901c299c40
add unwrap_or to result
2018-12-13 01:28:55 +09:00
ToruNiina
c15cb15c4c
simplify to_toml implementation
2018-12-13 00:38:04 +09:00
ToruNiina
c69969733f
use carriage return depending on env
2018-12-12 23:22:31 +09:00
ToruNiina
47cd6f5a41
remove redundant error message
2018-12-12 23:17:28 +09:00
ToruNiina
65cfa9d06b
remove unused file because its not stable
...
since toml::format is not stable now, remove once for the next release.
2018-12-12 20:35:21 +09:00
ToruNiina
03be08a2e6
fix conversion from offset_datetime to system_clock::time_point
2018-12-12 20:28:11 +09:00
ToruNiina
5aae0b17c8
change error message; require unicode codepoint
...
before this, it recommends the range that can be represented by utf-8
but the range of valid unicode codepoint is narrower than that. for
error message, it is good to recommend valid unicode codepoint.
2018-12-12 19:14:27 +09:00
ToruNiina
0f83ee6039
change temporaly loc from token to copy of loc
...
location constructed from token string does not has correct line number
information. to show an informative error message about UTF-8 and escape
sequences, parse_(ml_)basic_string requires those information that can
only be given from root location<Container>.
2018-12-12 19:12:23 +09:00
ToruNiina
879b7d3bff
improve format of error message for utf-8
2018-12-12 19:01:22 +09:00
ToruNiina
c33ad31981
split lexer for escape sequence for unicode
2018-12-12 18:59:20 +09:00
ToruNiina
5d29509d98
remove duplicated default argument for SFINAE
2018-12-12 18:58:54 +09:00
ToruNiina
717e03cd4a
add find-get overload functions
2018-12-12 17:55:34 +09:00
ToruNiina
dc060ba840
add explicit std::move to toml::get(&&)
2018-12-12 17:22:41 +09:00
ToruNiina
0c9b785969
add missing include file
2018-12-12 16:11:37 +09:00
ToruNiina
bcaf5baf88
fix parse_array_of_table_key
...
allow whitespace before and after [[ and ]] (like, [[ a.b ]])
2018-12-12 12:14:11 +09:00
ToruNiina
a1a81089c5
skip whitespace before/inside/after dotted-keys
2018-12-12 01:30:47 +09:00
ToruNiina
765ab97d8b
add whitespace between [] and key
...
[ a.b.c ] is allowed. also, [[ a . b ]] is allowed.
dotted key matches `a.b.c` only, so the explicit whitespace is needed.
2018-12-12 01:27:10 +09:00
ToruNiina
fc6a15440d
enable format_underline to print hint with region
2018-12-11 22:22:07 +09:00
ToruNiina
d7bba10fa3
improve error message in parse_key_value_pair
2018-12-11 22:21:22 +09:00
ToruNiina
247bcb0714
show error message for inhomogenous array
2018-12-11 22:17:28 +09:00
ToruNiina
27b9334f10
skip BOM if exists
2018-12-11 21:40:48 +09:00
ToruNiina
38135940e9
add expect<T>(toml::value)
2018-12-11 11:36:40 +09:00
ToruNiina
d75a977066
improve error message for bad unwrap a bit
2018-12-11 11:35:07 +09:00
ToruNiina
75c136924b
add datetimes to chrono
2018-12-10 22:06:06 +09:00
ToruNiina
0759e757ae
move is_chrono_duration from types to traits
2018-12-10 22:05:42 +09:00
ToruNiina
4e57c5f5df
improve error message for invalid line
...
like a = 12 = true, newline is expected after 12
2018-12-10 21:43:02 +09:00
ToruNiina
ff83a6a477
remove redundant part of error messages
2018-12-10 21:42:56 +09:00
ToruNiina
3f991c4759
improve power of get
2018-12-10 15:58:20 +09:00
ToruNiina
bf2158ae98
add map from exact toml type -> toml::value_t
2018-12-10 15:57:44 +09:00
ToruNiina
ff19c9f492
add corresponding region to each value
2018-12-10 15:57:17 +09:00
ToruNiina
28ba2713ee
fix initialization of region in value
2018-12-10 15:25:27 +09:00
ToruNiina
129ea81f66
remove redundant words in error message
2018-12-10 15:23:46 +09:00
ToruNiina
8dfe187d59
add a function to show a better error message
2018-12-10 15:06:28 +09:00
ToruNiina
8078c719fe
remove old code
2018-12-10 00:15:41 +09:00
ToruNiina
8e18aa9b16
add toml::parse
2018-12-10 00:14:46 +09:00
ToruNiina
ed155a5040
remove help msgs in parse_value
...
because the error message becomes too long
2018-12-09 21:54:47 +09:00
ToruNiina
cf03a08632
re-write parser using result and new value
...
wip.
2018-12-09 19:32:30 +09:00
ToruNiina
34c3d33936
use vector instead of initializer_list
2018-12-09 19:30:46 +09:00
ToruNiina
c04b75b2e3
consider LF in the range when writing error msg
2018-12-09 18:08:04 +09:00
ToruNiina
e24039f4ef
update toml::value and improve test_value
...
- enable to store new types
- store source string if possible
- refactoring
2018-12-09 18:03:20 +09:00
ToruNiina
dc8ccdc458
construct much more tmp variables
...
std::chrono::seconds -= std::chrono::milliseconds cannot be done bc
it represents the duration as integer value and milliseconds are less
than seconds. it causes compilation error when we pass a duration to
toml::local_time. to avoid this, we need to type-cast the values to
smaller duration, like sec -> msec
2018-12-09 18:00:46 +09:00
ToruNiina
2696e4e6ba
split storage from value
...
also, quit inheritance in storage class
2018-12-09 16:41:45 +09:00
ToruNiina
d1d5ca6bf8
add toml::string to have basic/literal flag
2018-12-09 16:40:57 +09:00
ToruNiina
80eafd1424
add datetime variants and rearrange type-related functions
2018-12-09 16:34:47 +09:00
ToruNiina
9fadf71a10
add constructor from duration to local_time
2018-12-09 16:27:47 +09:00
ToruNiina
ac3025d92f
change default return value of region_base
2018-12-09 13:39:13 +09:00
ToruNiina
b0e7efa1e0
make some constructors explicit
2018-12-09 13:38:57 +09:00
ToruNiina
84676eab0b
improve quality of error message
2018-12-09 13:05:09 +09:00
ToruNiina
2b3a4d49a5
add region_base to contain it in toml::value
...
to make toml::get and toml::value::cast return better error messages
2018-12-09 12:41:38 +09:00
ToruNiina
f834e0d142
cosmetic: sort value_t in types.h
2018-12-09 11:06:19 +09:00
ToruNiina
a1aa780a60
Merge branch 'toml-v050' of github.com
2018-12-09 11:05:26 +09:00
ToruNiina
48f3b73b91
add ctor(local_datetime, time_offset) to offset_datetime
2018-12-09 00:11:07 +09:00
ToruNiina
04854f9d21
stop having begin/end iterator in region/location
2018-12-09 00:00:15 +09:00
ToruNiina
8388664fc6
add map_err_or_else to result
2018-12-08 22:44:15 +09:00
ToruNiina
bb215836dc
add missing header files
2018-12-08 20:39:37 +09:00
ToruNiina
2b2a05148e
add from_string to utility
2018-12-08 20:21:15 +09:00
ToruNiina
66807d19d1
add specializations
2018-12-08 19:40:58 +09:00
ToruNiina
25789d1450
set Datetime as offset_datetime
...
prepare for TOML v0.5.0
2018-12-08 19:23:09 +09:00
ToruNiina
366f72bbdd
Merge branch 'datetime' into combinator
2018-12-08 19:06:19 +09:00
ToruNiina
3ef33c1637
change almost everything about datetime
2018-12-08 19:04:41 +09:00
ToruNiina
e05d0bdb84
stop using distance(next(iter), last)
...
under some condition, it causes serious error.
2018-12-06 20:13:06 +09:00
ToruNiina
5dbbc1fb1a
add escaped newline to lexer for multiline string
...
to use it in parse_ml_basic_string
2018-12-06 19:53:49 +09:00
ToruNiina
b3b5682cc0
add message to bad_unwrap
2018-12-06 17:15:19 +09:00
ToruNiina
df314da751
change error message considering context
...
combinators are used with other parser-combinators. in such cases, empty
input means `not enough character`.
2018-12-06 17:03:57 +09:00
ToruNiina
3d1783e12a
Merge 'types' into combinator
2018-12-06 16:06:25 +09:00
ToruNiina
f8aa604959
Merge branch 'result' into combinator
...
- fix some of the constructors of result
- add some utility member functions to boost
2018-12-06 12:57:58 +09:00
ToruNiina
e3f6805629
add conversion members to result
2018-12-06 12:47:14 +09:00
ToruNiina
1dddc6e26c
add missing std::move for ctors
2018-12-06 12:46:32 +09:00
ToruNiina
5e052237ba
add alias for snake_case types
2018-12-06 01:20:11 +09:00
ToruNiina
a995bd515b
Merge branch 'master' into combinator
...
split typedefs from value.hpp
2018-12-05 21:42:14 +09:00
ToruNiina
532457345c
split type definitions from value.hpp
2018-12-05 20:55:25 +09:00
ToruNiina
aa05858de3
add source_name to location/region to show filename
...
now error message prints the filename
2018-12-05 16:55:31 +09:00
ToruNiina
2b3c8887d6
add comment to confusing implementation
2018-12-04 22:17:20 +09:00
ToruNiina
932a0646ce
force clamping character code in [0,256)
2018-12-04 21:58:47 +09:00
ToruNiina
17f3d96766
add lexers
2018-12-04 20:29:59 +09:00
ToruNiina
1f564ec047
add combinators to scan content
2018-12-04 20:29:39 +09:00
ToruNiina
679e282e23
make variables in region/location read-only
...
to avoid modifying mistakenly
2018-12-03 00:10:26 +09:00
ToruNiina
59588e3a10
add static_assert and useful member funcs
2018-12-02 23:22:27 +09:00
ToruNiina
f83a8b450e
add concat_to_string to utility for error messges
2018-12-02 23:05:15 +09:00
ToruNiina
8bf97d8a00
add constructors that receive range to region
2018-12-02 23:04:49 +09:00
ToruNiina
2ee8ffab21
add begin/end to region
2018-12-02 21:54:39 +09:00
ToruNiina
9c1bfbd5eb
make region::source immutable
2018-12-02 21:03:08 +09:00
ToruNiina
c38b9b7dc7
add region and location to represent tokens
...
location is almost same as an Iterator, but having shared_ptr that points
the content. region is almost same as a range. by adding pointer to the
content source, utility function to show the error message can be
implemented easier. it is expected that this also makes easy to show
error messages after parse (e.g., in the case of bad_get)
2018-12-02 20:52:04 +09:00
ToruNiina
6c0a12148b
add result<T, E> struct to handle errors
...
aiming later updates and refactoring of parsers
2018-12-02 18:01:37 +09:00
ToruNiina
f326334147
add definition of constexpr static value to avoid linker error
2018-07-08 18:58:38 +09:00
ToruNiina
b1a55b1331
simplify SFINAE in to_toml
2018-05-05 13:09:40 +09:00
ToruNiina
170b0d6b3f
use constexpr value instead of call constexpr func directory
2018-05-05 12:06:06 +09:00
ToruNiina
433636a06f
simplify the implementation of from_toml
2018-05-05 11:59:34 +09:00
ToruNiina
9555817901
add get<pair>, get<tuple>
2018-05-05 11:46:09 +09:00
ToruNiina
e54deacf1a
simplify SFINAE expressions in toml::get
2018-05-05 11:42:11 +09:00
ToruNiina
f953a9cf23
add conjunction, disjunction, negation, index_seq
2018-05-05 11:37:18 +09:00
ToruNiina
117549bf70
change is_(map|container) and remove needless trait
2018-05-05 11:36:47 +09:00
ToruNiina
5aeb6f24df
change exception type #8 ; iterator may be invalid
2017-12-24 11:02:32 +09:00
ToruNiina
3f1b431ee2
add missing inline
specifier #7
2017-12-15 21:39:38 +09:00
ToruNiina
3083f65493
add get_or
2017-12-11 12:04:57 +09:00
ToruNiina
d1fd42ff7e
output line number if error occured
2017-06-17 19:05:24 +09:00
Guillaume Fraux
57cc7f77c1
Allow to build with intel c++ compiler
2017-06-13 16:05:55 +02:00
ToruNiina
8a98ce8e35
permit tie with non-match types in from_toml
2017-05-19 14:44:05 +09:00
ToruNiina
80adda8184
open file with binary mode
2017-05-17 14:12:19 +09:00
ToruNiina
2c92142d5c
restore parser and test
2017-05-17 14:07:34 +09:00
ToruNiina
d77ec7dc88
restore old parse function
2017-05-17 13:21:32 +09:00
ToruNiina
430940f766
fix typos
2017-05-17 13:12:21 +09:00
ToruNiina
1fc58095fa
use wstring_convert (but is deprecated in c++17)
2017-05-17 13:08:24 +09:00
ToruNiina
5ffc51a99d
experimentally use wchar and wstring in parser.hpp
2017-05-17 13:04:36 +09:00
ToruNiina
1265952b97
split parsing unicode file
2017-05-17 12:54:13 +09:00
ToruNiina
89c1094a69
set binary flag..
2017-05-17 12:15:39 +09:00
ToruNiina
d65642ddf6
add locale settings
2017-05-17 11:45:27 +09:00
ToruNiina
9e9a5a7253
fix typo
2017-05-17 10:55:22 +09:00
ToruNiina
81b08c924b
remove check from function not dereferencing iter
2017-05-17 08:06:17 +09:00
ToruNiina
74b618c412
fix is_chain_of_impl
2017-05-16 22:29:31 +09:00
ToruNiina
fe6a38737d
add Iterator pointing to the end of a range
2017-05-16 22:12:32 +09:00
Luthaf
40da3f54d5
Fix missing include
2017-05-16 14:09:46 +02:00
Guillaume Fraux
612119fa1e
Do not use the macro shortcut for not
...
It is not required by the standard
2017-05-15 14:05:54 +02:00
ToruNiina
eb9f4dce1e
remove static and indent
2017-05-13 15:00:02 +09:00
ToruNiina
95e48744d1
impl format<string>
2017-05-13 11:28:11 +09:00
ToruNiina
f52b78010c
fix array_of_table assignments
2017-05-12 22:28:49 +09:00
ToruNiina
1c26ffe3ae
add parse() function
2017-05-12 20:49:47 +09:00
ToruNiina
fd58cc507f
add parse_data
2017-05-11 19:36:12 +09:00
ToruNiina
6ab05a8594
change impl of parser of values
2017-05-11 15:09:11 +09:00
ToruNiina
855cbe5aff
add operator= and ctor for result
2017-05-11 15:08:38 +09:00
ToruNiina
f5d301016f
add parser impl for integer, float, boolean
2017-05-11 00:14:22 +09:00
ToruNiina
88e2c3fe48
change impl of parser: optional based
2017-05-10 23:56:09 +09:00
ToruNiina
acfc706e0c
fix some small mistakes
2017-05-10 11:16:22 +09:00
ToruNiina
1392c2f3b9
add stream manipulators
2017-05-10 00:43:13 +09:00
ToruNiina
70f85ec818
add format
2017-05-09 22:09:03 +09:00
ToruNiina
c706a54121
add namespace specifier
2017-05-09 22:07:28 +09:00
ToruNiina
6878abdca1
define charactor type
2017-05-08 19:17:14 +09:00
ToruNiina
bf7461f7b4
fix parsing order of toml::value
2017-05-08 19:16:54 +09:00
ToruNiina
bdc7fbdf08
fix fundamental_type checking order
2017-05-08 19:16:26 +09:00
ToruNiina
29fe377438
add parser for tables
2017-05-08 19:08:49 +09:00
ToruNiina
d1814d3922
fix arguments
2017-05-08 19:08:30 +09:00
ToruNiina
bae25322f8
add acceptor for overall data
2017-05-08 19:07:50 +09:00
ToruNiina
567b69d050
fix orders of call
2017-05-08 19:07:29 +09:00
ToruNiina
98d1d88f60
add parse_array/inline table
2017-05-07 15:04:40 +09:00
ToruNiina
414fc4d0fa
change key acceptor
2017-05-07 15:04:18 +09:00
ToruNiina
2d27c94506
fix missing semicolon
2017-05-07 14:09:13 +09:00
ToruNiina
77f59a2e94
split is_array to fixed_type_array and array_of_some_type
2017-05-07 14:08:42 +09:00
ToruNiina
7355c76ed0
add parse_string and parse_datetime
2017-05-07 13:51:25 +09:00
ToruNiina
a1218b266a
add restriction to datetime offset size
2017-05-07 13:50:53 +09:00
ToruNiina
00e4c94766
add is_string and is_datetime
2017-05-07 12:29:54 +09:00
ToruNiina
726a70cd8f
enable toml::from_toml to get static array (like std::array)
2017-05-07 10:40:47 +09:00
ToruNiina
3203d39dad
enable toml::get to make static array (like std::array)
2017-05-07 10:40:17 +09:00
ToruNiina
58c12a69be
add toml::resize func that resize only resizable container
2017-05-06 23:40:57 +09:00
ToruNiina
a506dfd3c1
add has_resize_method
2017-05-06 23:40:28 +09:00
ToruNiina
7c63bc438c
remove needless typedef
2017-05-06 18:46:07 +09:00
ToruNiina
7dde4f3039
add parser of fundamental types
2017-05-06 18:44:19 +09:00
ToruNiina
bbb9388d3a
add typedefs to basic_datetiem
2017-05-06 18:43:55 +09:00
ToruNiina
864840d11c
add table definition acceptor
2017-05-05 19:33:45 +09:00
ToruNiina
e35e620812
add acceptor for array and inline table
2017-05-05 18:54:09 +09:00
ToruNiina
9a627b44fb
add some test
2017-05-05 17:17:03 +09:00