5 ms·
Seems to me it's bad practice to combine the text you want to show with the formatting (escape codes) in string literals. Everything is then immediately depende
by kyberias 6y ago
Seems to me it's bad practice to combine the text you want to show with the formatting (escape codes) in string literals. Everything is then immediately dependent on specific type of UI technology (terminal).
- iforgotpassword 6y agoEh, depends on context, for bash scripts that might be just fine. You need to have some styling information go along with it anyways, so instead of having some dedicated markup language and then having an output library that converts that to whatever your output uses, you could just declare those ansi escape codes your "markup language" and should you ever need to output it to something else, say a web page, I'm sure there's code around that does the conversion. But I guess to make it more readable you might want to put those commonly used sequences into some variables so you can do echo "${esc_red}ERROR${esc_reset}: All messed up"
- db48x 6y agoAt least call tput or something so that your script doesn't do anything wacky just because you SSH'd in this time instead of using your customary terminal.
- klodolph 6y agoFor advanced features, sure. But basic colors are nearly universal.
- db48x 6y agoUntil someone runs it in eshell, which is a shell but not a terminal emulator and you have to configure an override just for that special program so that it isn't dumping unreadable garbage into the buffer.
- klodolph 6y agoHonestly, since eshell is the only example I can think of, I’d say that it’s more than fair to consider this a flaw in eshell.
- account42 6y agoDepending on what you are doing you can always parse and translate the escape codes to something else for the systems where they are not supported. One advantage of using in-line escape codes in your string is that you can compose multi-colored text and buffer them in whatever strings your language provides.
- kyberias 6y agoSorry, I don't understand the benefit. Buffer them? It's clearly harmful to write escape codes in string literals. They are not readable. The escape code to change any text to red should appear in code exactly once. This is analogous to HTML inline styles.
- tempodox 6y agoOf course. Just view those strings as the output of the formatting backend for the terminal. The article is about terminal escape codes, not software modularization.
- kyberias 6y agoWell they wrote: "This tends to result in strings in our code that look a little like this." That's why I think they have these strings in the code.