File tree Expand file tree Collapse file tree 1 file changed +67
-1
lines changed Expand file tree Collapse file tree 1 file changed +67
-1
lines changed Original file line number Diff line number Diff line change @@ -104,6 +104,63 @@ namespace
104
104
105
105
inline constexpr auto divider =
106
106
" ################################################################################" sv;
107
+
108
+ void print (std::string_view str)
109
+ {
110
+ // clang-format off
111
+ constexpr std::string_view control_char_escapes[] =
112
+ {
113
+ " \\ u0000" sv,
114
+ " \\ u0001" sv,
115
+ " \\ u0002" sv,
116
+ " \\ u0003" sv,
117
+ " \\ u0004" sv,
118
+ " \\ u0005" sv,
119
+ " \\ u0006" sv,
120
+ " \\ u0007" sv,
121
+ " \\ b" sv,
122
+ " \\ t" sv,
123
+ " \\ n" sv,
124
+ " \\ u000B" sv,
125
+ " \\ f" sv,
126
+ " \\ r" sv,
127
+ " \\ u000E" sv,
128
+ " \\ u000F" sv,
129
+ " \\ u0010" sv,
130
+ " \\ u0011" sv,
131
+ " \\ u0012" sv,
132
+ " \\ u0013" sv,
133
+ " \\ u0014" sv,
134
+ " \\ u0015" sv,
135
+ " \\ u0016" sv,
136
+ " \\ u0017" sv,
137
+ " \\ u0018" sv,
138
+ " \\ u0019" sv,
139
+ " \\ u001A" sv,
140
+ " \\ u001B" sv,
141
+ " \\ u001C" sv,
142
+ " \\ u001D" sv,
143
+ " \\ u001E" sv,
144
+ " \\ u001F" sv,
145
+ };
146
+ // clang-format on
147
+
148
+ for (char c : str)
149
+ {
150
+ if (c >= 0 && c < std::size (control_char_escapes))
151
+ {
152
+ std::cout << control_char_escapes[c];
153
+ }
154
+ else
155
+ {
156
+ if (c == ' \\ ' )
157
+ {
158
+ std::cout << ' \\ ' ;
159
+ }
160
+ std::cout << c;
161
+ }
162
+ }
163
+ }
107
164
}
108
165
109
166
int main ()
@@ -118,7 +175,16 @@ int main()
118
175
}
119
176
catch (const toml::parse_error& err)
120
177
{
121
- std::cout << err << " \n\n " sv;
178
+ std::cout << err;
179
+
180
+ auto line_num = err.source ().begin .line ;
181
+
182
+ if (auto line = toml::get_line (str, line_num))
183
+ {
184
+ std::cout << " \n Line " sv << line_num << " : " sv;
185
+ print (*line);
186
+ }
187
+ std::cout << " \n\n " sv;
122
188
}
123
189
#else
124
190
if (auto result = toml::parse (str); !result)
You can’t perform that action at this time.
0 commit comments