Support python-like token replacement and formatting #3358
Closed
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.
Launch Checklist
This PR introduces advanced (Python
str.format()
-like) token formatting when using{fieldname}
string replacement.The change is backwards compatible with existing syntax, we very conveniently (deliberately?) chose the curly-bracket syntax that is basically compatible with Python's
str.format()
.The primary motivation for this change is number formatting:
float
anddouble
fields encoded in vector tiles are currently unformatted. Values like0.1
encoded as afloat
currently end up as text labels like0.100000005932
. This change allows you to specify number formatting precision in the Python syntax, like:{float_field::.2}
for 2 decimal places.There is an alternatively library at https://github.com/xfix/python-format, which seems to have better test coverage, but does not support using dictionary keys as field names.