JS was already pretty close. Babel allows a fantastic degree of power in code transformation, it just doesn't preserve blank space.
If I were to use my preferred terminology I would simply call these transform-your-own-code formats "embeddings", and there can be many embeddings for a single language.
> Babel allows a fantastic degree of power in code transformation
That's still not homoiconicity. It reminds me old Stuart Sierra's presentation from Clojure/conj¹. Around 6 minute mark: "Adding eval to a language, even successfully, does not count as homoiconicity"... "and you didn't even succeed at that..."
---
¹ https://www.youtube.com/watch?v=o7zyGMcav3c