Support HTML output #56

Open
bhollis opened this Issue Sep 16, 2012 · 6 comments

Comments

4 participants
Owner

bhollis commented Sep 16, 2012

Right now Maruku only produces XHTML output, but it should be able to produce HTML output instead.

This would fix the self-closing div/iframe issues if I'm not mistaken?

Owner

bhollis commented Feb 25, 2013

Hi Alex,

Could you explain the "self-closing div/iframe issues"? I'm not aware of them, and I don't think we have any tests for problems around divs or iframes, so if you have any examples I can make sure to fix that.

Collaborator

distler commented Feb 25, 2013

If the input says <div></div>, Nokogiri serializes this to <div/>. Which is perfectly equivalent, when interpreted as XHTM, but means something radically different (an opening div tag, with no corresponding closing tag), when interpreted as HTML.

Ideally, an HTML5-aware serializer would be smarter about this (knowing that only "void" elements can have self-closing tags).

  • <img/> is perfectly valid HTML5, and means the same thing as it does in XHTML
  • <iframe/> is not valid HTML5, and should be written as <iframe></iframe> (which will be interpreted correctly, either in HTML or XHTML).
inline-html = '<div></div>
<iframe src="http://www.google.com"></iframe>'

 => "<div></div>\n<iframe src=\"http://www.google.com\"></iframe>" 

Maruku.new(inline-html).to_html

 => "<div /><iframe src='http://www.google.com' />"

I believe self closing div's and several other elements are valid XHTML but not HTML and this causes issues in the browsers I've used. Adding empty space between the elements (i.e. <div> </div>) fixes the problem.

Owner

bhollis commented Feb 25, 2013

OK, in that case yes, when HTML output is added, it should support this (by virtue of Nokogiri doing the right thing).

+1. The current Maruku (REXML, really) also chokes on html attributes without values.

<span data-myattribute>I cause an `malformed XML: missing tag start` REXML error</span>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment