Before I start writing an HTML parser for Showdown, I want to see if there's a safe way to have Markdown process the contents of HTML block elements by default.  I don't think markdown="1" is an official part of the language yet, so this seems like a good time to talk about it.
<br><br>Being able to wrap Markdown text in divs and spans would make it possible to add more structure to documents, and to give css and javascript something to hold on to.&nbsp; It&#39;s probably reasonable to ask advanced users to write simple markup like `&lt;div class=&quot;description&quot;&gt;`, and it helps keep Markdown&#39;s syntax small.&nbsp; But I think something as verbose as `&lt;div class=&quot;description&quot; markdown=&quot;1&quot;&gt;` is too much to ask.
<br><br>So what breaks when you run complex HTML through Markdown?&nbsp; I&#39;ve come up with two problems so far: code blocks and paragraph wrapping.<br><br>First, we don&#39;t want to accidentally trigger a code block with indented HTML like this:
<br><br>&lt;div class=&quot;vcard&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &lt;span class=&quot;fn&quot;&gt;John Smith&lt;/span&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div class=&quot;tel&quot;&gt;212-555-1212&lt;/div&gt;<br>&lt;/div&gt;<br><br>I think the best way around this is just to disable Markdown&#39;s code blocks within HTML.&nbsp; People can always use `&lt;code&gt;` and `&lt;pre&gt;` tags (and there&#39;s probably a safe way for Markdown to do `&amp;` and `&lt;` encoding within `&lt;code&gt;` elements to make them less of a pain in the ass).&nbsp; Disallowing code blocks in HTML would make writing an HTML parser easier too -- but that&#39;s a lousy reason to do it.
<br><br>Second, we need to make sure we don&#39;t litter HTML with lots of extra paragraph tags.&nbsp; I haven&#39;t looked at all the places it&#39;s a problem, but I think we can come up with a set of rules that will work well: don&#39;t make a solitary paragraph or one whose only siblings are block elements; don&#39;t wrap anything the `&lt;p&gt;` element isn&#39;t allowed to contain; don&#39;t add `&lt;p&gt;` tags if they&#39;d be siblings to existing ones... that kind of thing.
<br><br>There&#39;s probably a show-stopper I&#39;m missing, but I feel like we can get this working for the vast majority of HTML in the wild.&nbsp; And if a user pastes in HTML that we do break, there&#39;s always `markdown=&quot;0&quot;`.
<br><br>So what are the other obstacles?<br><br><br>-John<br><br>&lt;<a href="http://www.attacklab.net/showdown-gui.html">http://www.attacklab.net/showdown-gui.html</a>&gt;<br><br>