Commit Graph

335 Commits

Author SHA1 Message Date
Dmitry Atamanov 290efc0747 Improve error messages in std.fmt (#7898) 2021-01-30 13:12:44 +02:00
Asherah Connor e8740a90b9 complete {Z} deprecation in std.fmt.formatIntValue
formatZigEscapes doesn't exist any more.
2021-01-29 20:46:39 +02:00
Jay Petacat a021c7b1b2 Move fmt.testFmt to testing.expectFmt 2021-01-12 18:13:29 -08:00
Jonathan Knezek fc10c9c4ce Add std.fmt.formatDuration and std.fmt.duration (#7297)
`formatDuration` works on a writer, and `duration` wraps a u64 to allow pleasant injection into format strings.
2021-01-11 19:15:56 -05:00
Jonathan Marler 31802c6c68 remove z/Z format specifiers
Zig's format system is flexible enough to add custom formatters.  This PR removes the new z/Z format specifiers that were added for printing Zig identifiers and replaces them with custom formatters.
2021-01-07 23:49:22 -08:00
LemonBoy 608a73efb1 Decrement max_depth when printing slice elements 2021-01-02 17:12:57 -07:00
LemonBoy 1ca2deca33 std: Disable the special casing of {} for u8 slices/arrays
Unless {s} is specified the contents won't be treated as a string.
2021-01-02 17:12:57 -07:00
LemonBoy dd973fb365 std: Use {s} instead of {} when printing strings 2021-01-02 17:12:57 -07:00
LemonBoy 5a06fdfa55 Use same brace pairs for arrays/slices/vectors 2021-01-02 17:12:57 -07:00
LemonBoy d4a8fc8b67 Small cleanup 2021-01-02 17:12:57 -07:00
data-man 2b5e93fd3e Add formatting for arrays 2021-01-02 17:12:57 -07:00
LemonBoy 6f53653db1 std: Refactor the slice formatting code
Also fix the `*` specifier for more types, print an error message if we
can't show the value address.
2021-01-02 17:12:57 -07:00
ryuukk 5275280ede Formatting fix 2021-01-02 17:12:57 -07:00
ryuukk 1d97747665 Pretty print Slices
This code is adapted from pixelherodev paste from IRC

I have added a new fmt option to handle printing slice values ``{v}`` or ``{V}``

While i think it can be made the default, i want your opinion about it

```zig
    var slicea = [0]u32{};
    var sliceb = [3]u32{ 1, 2, 3 };

    std.log.info("Content: {v}", .{slicea});
    std.log.info("Content: {v}", .{sliceb});
```

will print:

```
info: Content: []
info: Content: [1, 2, 3]
```

Question:

Should we drop ``{v}`` and make it the default behavior?
2021-01-02 17:12:57 -07:00
Frank Denis 6c2e0c2046 Year++ 2020-12-31 15:45:24 -08:00
LemonBoy a471a57560 std: Fix formatting of type values
Closes #7429
2020-12-13 23:21:23 -05:00
LemonBoy 3da6b1218a std: Implement named arguments & runtime width/precision 2020-11-20 08:36:47 +01:00
LemonBoy 6b39167fdc std: Rewrite the fmt parser
Turn the FSM parser into a linear one so that's easier to implement new
features and/or more error checking without adding more and more states.
Functionally-speaking the two parsers are at feature parity.
2020-11-20 08:36:10 +01:00
Andrew Kelley 473cb1fd74 Merge pull request #6390 from LemonBoy/reboot-3970
std.fmt meets UTF-8
2020-11-19 14:58:11 -08:00
LemonBoy 60638f0c82 Nicer code for the error code path 2020-11-19 18:16:23 +01:00
Tadeo Kondrak 25ec2dbc1e Add builtin.Signedness, use it instead of is_signed 2020-11-19 18:59:21 +02:00
LemonBoy 3a1f515e09 Address review comments 2020-11-05 16:10:34 +01:00
LemonBoy 1982e0c18a Fix typo in documentation 2020-11-05 16:10:34 +01:00
LemonBoy 0316ac959c Make std.formatBuf UTF-8 aware 2020-11-05 16:10:34 +01:00
LemonBoy 675de8d6b7 Clean up the unicode codepoint formatter a bit 2020-11-05 16:10:34 +01:00
LemonBoy 2cce23062b Update the API and add add error-recovery path 2020-11-05 16:10:33 +01:00
data-man 678ecc94ca Add 'u' specifier to std.format 2020-11-05 16:10:33 +01:00
LemonBoy 35a8d90e55 std: Make parseInt/parseUnsigned detect the radix 2020-11-02 14:13:06 -05:00
Isaac Freund 50ba018223 std/ascii: add spaces array
This may be combined with std.mem.trim to form a proper replacement for
the now deprecated std.fmt.trimWhitespace().
2020-11-02 13:20:58 -05:00
Andrew Kelley af60931a48 Merge pull request #6888 from jcmoyer/issues/6874
Update std.fmt docs and add test for null terminated slices with embedded null bytes
2020-11-01 18:30:09 -05:00
Jakub Konka d530e7f9c7 Make std.fmt.bufPrintIntToSlice public
Deprecate `std.fmt.trim` and `std.fmt.isWhiteSpace` in favour of
`std.mem` alternatives.

Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-11-01 15:48:50 -05:00
J.C. Moyer 788900c35c Add test for null terminated slices with embedded null bytes 2020-10-30 23:58:23 -04:00
J.C. Moyer b38dea37c7 Update doc comments to reflect current behavior 2020-10-30 23:58:23 -04:00
data-man 194e29adfc Format null type in std.fmt 2020-10-26 15:40:48 -04:00
Andrew Kelley e51bc19e4a Merge pull request #6394 from Vexu/fmt
std.fmt add specifier for printing Zig identifiers
2020-10-17 21:06:54 -04:00
Vexu e8ca1b254d std: remove renderStringLiteral in favor of std.fmt specifier 2020-10-17 23:20:38 +03:00
Jan Prudil aadccc4206 Make std.meta.Int accept a signedness parameter 2020-10-17 14:09:59 +02:00
Vexu 8d38a91ca8 std.fmt: add specifier for Zig identifiers 2020-10-17 10:26:59 +03:00
Isaac Freund d52035f401 std/fmt: add bufPrintZ() 2020-10-15 12:21:19 +02:00
Isaac Freund b259696cfb std/fmt: rename allocPrint0() to allocPrintZ()
This is consistent with other standard library functions working with
null terminated pointers/slices.
2020-10-15 12:21:14 +02:00
Rocknest 548fd6e87b force comptime on comptimePrint 2020-10-14 01:03:01 -04:00
Tadeo Kondrak e9bca9de3c std.fmt.comptimePrint: Properly null-terminate result and add test 2020-10-07 11:43:23 -06:00
Tadeo Kondrak 49e68bdcf3 std.fmt.comptimePrint: Return null terminated string 2020-10-06 22:21:06 -06:00
Alexandros Naskos a4fe438d39 std.fmt.comptimePrint: bufPrint cannot return an error 2020-10-02 00:39:19 +03:00
Tadeo Kondrak 236af776fd std.fmt: add comptimePrint 2020-09-25 12:53:35 -06:00
LemonBoy 27adb82fda std: Respect user-specified alignment when formatting ints
This implementation tries to do the right thing (TM) by treating the
sign as part of the number itself, therefore the alignment parameter
applies to both the sign and the digits.

In other words the format string `{:>4}` with -1 as input will not
output `-  1` but `  -1`.

And let's default to right alignment for everything as that's what users
want, especially when printing numbers. Many implementations use
different defaults for numeric vs non-numeric types, let's strive for a
consistent behaviour here.
2020-09-17 00:53:08 +02:00
LemonBoy bb9a4ad6e9 std: Fix {*} printing of non-pointer types
Fixes a regression introduced in #6246.
Adds a test to make sure this won't happen again.
2020-09-16 13:45:54 +02:00
Tadeo Kondrak 771f35c593 Use less inefficient method of replacing TypeInfo.UnionField.enum_field 2020-09-07 06:23:27 -06:00
Tadeo Kondrak ac19ccf595 Update standard library for removal of TypeInfo.UnionField.enum_field 2020-09-07 06:23:26 -06:00
Veikka Tuominen 41bbadbb9a Merge pull request #6246 from Vexu/field
Remove deprecated fields on `type`
2020-09-05 13:58:02 +03:00