Sebb
Any chance we get format for string interpolation?
sth like string — Common string operations — Python 3.14.6 documentation?
I really fear erlang’s ~F.P.PadModC (io — OTP 29.0.2 (stdlib 8.0.1))
First Post!
hauleth
What is there to fear? It is almost the same as Python instead of % you use ~. If anything we will get wrapper over io_lib:format/2 as it is handy for report_cb in logger handlers.
Most Liked
al2o3cr
For future readers, here’s the format needed:
:io.fwrite("#~2.16.0B~2.16.0B~2.16.0B", [r, g, b])
# prints the string "#F27B04"
Values smaller than zero or larger than 255 will be replaced with **:
:io.fwrite("#~2.16.0B~2.16.0B~2.16.0B", [-r, g, b])
# prints "#**7B04"
:io.fwrite("#~2.16.0B~2.16.0B~2.16.0B", [10*r, g, b])
# prints "#**7B04"
Breakdown in detail:
~2.16.0B
2is the field width. Without it, values less than 16 will only output a single character16is called “precision” in the API, but for theBcontrol sequence it’s the base to use0is the padding character, because we want4to print as04not<space>4
hauleth
al2o3cr
IMO that’s too big of a change - one of the nice things about Elixir is the regularity of the syntax, and that would make #{} magical in a way that’s not available elsewhere. A more “Elixir-y” solution would be to make the conversion explicit:
"##{to_hex(r)}#{to_hex(g)}#{to_hex(b)}"
...
defp to_hex(v), do: :io_lib.format("~2.16.0B", [v])
Some other gotchas that come to mind:
- making runtime-determined values work (
*in the various positions) means more tricky syntax - what would
"#{some_calculation():i}"do? “Ignore one thing from the input” makes a lot more sense when the format and the data are fully separated (as in:io) - the term-handling codes don’t output Elixir-shaped strings:
:io.fwrite("~w", [DateTime.utc_now()])
prints
#{'__struct__' => 'Elixir.DateTime',calendar => 'Elixir.Calendar.ISO',day => 1,hour => 22,microsecond => {937508,6},minute => 47,month => 5,second => 18,std_offset => 0,time_zone => <<69,116,99,47,85,84,67>>,utc_offset => 0,year => 2022,zone_abbr => <<85,84,67>>}
Last Post!
RemyXRenard
This is somewhat of a thread necro, and I already posted this in the Livebook category, but if someone comes here looking for some :io_lib.format examples, I put together a Livebook.
Fun with formatting:
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









