| ▲ | zelphirkalt 6 hours ago | |||||||||||||||||||||||||||||||
All this complication seems to stem from the simple fact, that the fences don't have a recognizably distinct start and end marker. It's all "`" or "~", instead of one symbol at the start and another, different symbol at the end. And then going into the different numbers of backticks or tildes. Why add such ambiguity, that will only make it harder to parse things correctly? This immediately raises the question: "What if I start a block with 4 backticks and end it with 5?" All these complications would have been avoidable with a more thought through design/better choices of symbols. For example one could have used brackets:
And if one wanted to nest it, it should automatically work:
In case one wants to output literally "[[[" one could escape it using backslash, as usual in many languages.In a parser that would be much simpler to parse. It is kind of like parsing S-expressions. There is no need for 4 backticks, 5, or any higher number. I don't want to sit there counting backticks in the document, to know what part of a nested code block some code belongs to. It's a silly design. | ||||||||||||||||||||||||||||||||
| ▲ | charles_f 4 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||
Your solution for the problem described here is to escape with a different character. MD's is to add more special characters. Both are valid and exist in other languages, I wouldn't qualify one as better thought than the other - though since we're talking about text that I don't want modified, if I prefer adding ticks rather than going into the text and escaping them one by one. The complication doesn't stem from lack of distinct start and end, what you are trying to solve for here, is when you have multiple languages in a single block, and want pretty colors on each. Seeing that HTML doesn't support imbrication of pre tags (or rather doesn't render one embedded in the next), that would probably not work without producing something that is not pure html. > In a parser that would be much simpler to parse Parsing a variable number of ` is not more complex than looking ahead for a closing boundary. In fact, once you introduce escaping characters, you need to handle escaping of the escaping character, which is slightly more complex. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | armchairhacker 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
> In case one wants to output literally "[[[" one could escape it using backslash, as usual in many languages. Sometimes you want to paste a large region of code into a code block, and escaping the content is harder than fixing and start and end delimiters. This matters particularly in Markdown, where embedding large regions of code or text is common, whereas other languages you’d put it in its own file. So I still suggest the ability to change the number of open and close brackets. Then you’ll also need an implicit newline or other way to distinguish content that starts with an open bracket. | ||||||||||||||||||||||||||||||||
| ▲ | embedding-shape 5 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
Indeed! Last time I dealt with this exact problem in a toy application made for myself, I ended up making the markdown parser only read ```$LANG syntax, and making it assume just ``` is a closing tag, not accepting it as a opening tag. Made it easier for the pretty syntax formatter to do it's job too, as it no longer has to figure out the language. | ||||||||||||||||||||||||||||||||
| ▲ | _ache_ 4 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||
Do you realize that your solution is basically to use a tag, which is why Markdown have been developed, to not use them. The classic way in markdown to insert block of code is to indent the code. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||