Open kgryte opened 1 year ago
While full time formatting may be beyond the scope of a @stdlib/string/format
extension, something like strptime
's %D
(for date) and %T
(for time) could be possible. This may be enough to satisfy most use cases; however, it would be biased toward English locales.
@kgryte has there been any development on this (name of the package)? I would love to help with this. I had a doubt, will Complex128
be formatted as Complex128.prototype.toString()
?
@Snehil-Shah No, haven't had the bandwidth to think about. I updated the labels accordingly.
will
Complex128
be formatted asComplex128.prototype.toString()
?
No, not necessarily, as users should be able to specify the desired precision, just as they can with real-valued floating-point numbers. In which case, Complex128#toString()
is not sufficient.
Description
This RFC proposes adding support for non-standard specifiers for string formatting. Currently,
@stdlib/string/format
supports the standardprintf
specifiers as found in C. Would be convenient to be able to support additional serialization formats, such asComplex128
andComplex64
with precision and exponential notation formatting).Based on the current list of supported specifiers, the following could be potential extensions (although, we'd want to confirm that none of these are already present in common (non-standard)
printf
implementations):Complex128
:Z
Complex64
:z
JSON
:J
object
:O
(capital o)times
:D
orT
percentage
:p
The tricky extension would be times, as would be nice to support something like
YYYY-MM-DD HH:MM:SS
, but not clear how this would be done, as this extends far beyond the relative complexity ofprintf
specifier modifiers. Perhaps better would be to have a dedicated time formatter similar to C'sstrptime
andstrftime
.My recommendation is that support for non-standard specifiers be included as a package separate from
@stdlib/string/format
which, IMO, should remain a high fidelity analog of C'sprintf
. Such a package can reuse@stdlib/string/base/format-tokenize
, but implement/extend@stdlib/string/base/format-interpolate
. The name of this extended package is TBD.Related Issues
None.
Questions
No.
Other
Prior art:
Checklist
RFC:
.