neolib::format

11 views
Skip to first unread message

Mr Flibble

unread,
Jan 29, 2023, 7:50:04 PMJan 29
to
Hi!

neolib::format implemented in terms of std::vformat to provide span
details of formatted parameters in result text.

auto result1 = neolib::format("{0}:{1}", "xyzzy", 42);
auto result2 = neolib::format("{{0}}:{1}", "xyzzy", 42);
auto result3 = neolib::format("{0}:{{1}}", "xyzzy", 42);
auto result4 = neolib::format("{0}:{0}:{1}", "xyzzy", 42);

assert((result1.text == "xyzzy:42"));
assert((result1.args == neolib::format_result::arg_list{ { 0, 0, 5 },
{ 1, 6, 8 } }));
assert((result1.arg_span(0) == "xyzzy"));
assert((result1.arg_span(1) == "42"));
assert((result2.text == "{{0}}:42"));
assert((result2.args == neolib::format_result::arg_list{ { 1, 6,
8 } }));
assert((result2.arg_span(1) == "42"));
assert((result3.text == "xyzzy:{{1}}"));
assert((result3.args == neolib::format_result::arg_list{ { 0, 0,
5 } }));
assert((result3.arg_span(0) == "xyzzy"));
assert((result4.text == "xyzzy:xyzzy:42"));
assert((result4.args == neolib::format_result::arg_list{ { 0, 0, 5 },
{ 0, 6, 11 }, { 1, 12, 14 } }));
assert((result4.arg_span(0) == "xyzzy"));
assert((result4.arg_span(1) == "42"));

/Flibble
Reply all
Reply to author
Forward
0 new messages