Maybe I’m missing some context, but all that actually should be needed in the top-level else block is ‘gradient[idx]’. Pretty much anything else is going to be longer, harder to read, and less efficient.
Logically this still would be a case/switch though...
There's no need for any conditional construct here whatsoever.
You'll note it has already constructed a string in the right order to do that, but then copped out with the if-else.
(char_at s index) # Get ASCII value at index (0-based)
(string_from_char code) # Create string from ASCII value
So, you can pluck a character... From an UTF-8 string? What if the rendering used multibyte characters?Ed: There seems to be an UTF-8 library:
https://github.com/jordanhubbard/nanolang/tree/main/modules/...