Today directives and code blocks share the same parser.
This is not a sustainable solution in the long run as code is currently parsed as markdown and then we do some hacks to render the original content.
This issue serves as a reminder to separate the two and ensure code blocks are LeafBlock's in the AST so that its contents are not parsed and treated as a raw string slice.