[core] TermCtl: A custom parser to replace color and mode placeholders in print/format #248
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Do not delegate to fmt. There is a regression in fmt 11, which broke that - named placeholders cannot be mixed with automatically indexed ones. Although I think this should be allowed, using the named args for the TermCtl color placeholders was basically a hack. A custom parser will be more flexible and allow more freedom regarding the syntax.
The new placeholders are processed purely in runtime. Unknown placeholders are left untouched. Compile-time checking is still possible, but that doesn't seem as important feature. Actual replacing by escape sequences must be done in runtime, as it depends on what is attached to the output stream (tty or pipe).
New syntax:
<
, e.g."\<"
fg:
, make it default - e.g.<red>
bg:
, use different syntax for that, e.g.<@blue>
(blue background),<red@blue>
(red text on blue background)