Skip to content

Commit

Permalink
Adding comments for range formatting. (#2706)
Browse files Browse the repository at this point in the history
* Adding comments for range formatting.

* Adding missing quotes
  • Loading branch information
brevzin committed Jan 9, 2022
1 parent 3c98f1a commit c06bef7
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion doc/syntax.rst
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,37 @@ are valid only for ``std::tm`` and not durations or time points.

``std::tm`` uses the system's `strftime
<https://en.cppreference.com/w/cpp/chrono/c/strftime>`_ so refer to its
documentation for details on supported conversion specifiers.
documentation for details on supported conversion specifiers.

.. range-specs:
Range Format Specifications
===========================

Format specifications for range types have the following syntax:

..productionlist:: sf
range_format_spec: [":" [`underlying_spec`]]

The `underlying_spec` is parsed based on the formatter of the range's
reference type.

By default, a range of characters or strings is printed escaped and quoted. But
if any `underlying_spec` is provided (even if it is empty), then the characters
or strings are printed according to the provided specification.

Examples:

fmt::format("{}", std::vector{10, 20, 30});
// Result: [10, 20, 30]
fmt::format("{::#x}", std::vector{10, 20, 30});
// Result: [0xa, 0x14, 0x13]
fmt::format("{}", vector{'h', 'e', 'l', 'l', 'o'});
// Result: ['h', 'e', 'l', 'l', 'o']
fmt::format("{::}", vector{'h', 'e', 'l', 'l', 'o'});
// Result: [h, e, l, l, o]
fmt::format("{::d}", vector{'h', 'e', 'l', 'l', 'o'});
// Result: [104, 101, 108, 108, 111]

.. _formatexamples:

Expand Down

0 comments on commit c06bef7

Please sign in to comment.