Multi-Line Strikethrough Not Covering Quotes


(Alex Sherwood) #1

I’m not sure whether this bug is specific to Discourse but when I try to strikethrough several lines of text & one of those lines is a quote, the quote’s text is not struck out.

The preview displays the quoted text as struck out -

but when posted, it renders like this -

Striking out each line instead like this -

does behave as I was expecting -


Strikethrough `<s>` displayed differently in editor preview and post
(cpradio) #2

You should really try that example at https://markdown-it.discourse.org

As that is the site testing implementing the common mark spec into Discourse.


(Sam Saffron) #3

Works fine in Markdown.it


(Alex Sherwood) #4

I’m still having the same issue in Markdown.it, in your example you haven’t got struck out text before the quote but in mine, I have -

looks like

From this topic -

https://markdown-it.discourse.org/t/testing-multi-line-strikethrough-with-quotes/90


(Sam Saffron) #5

Looks like nokogiri may be messing stuff up, I will investigate.


(Jeff Atwood) #6

Let’s see

Some text

a quote

raw

<s>Some text

> a quote

</s>

This still happens.


(Sam Saffron) #7

Strike is an inline, not a block level element, I may just add a rule to balance inline tags


(Matt Maier) #8

So this is still a thing. The preview is different from the final product.


(Jeff Atwood) #9

Simple workaround, use strikethrough as a line not block element.

Rather than expecting this to work

<s>
hey
> there
</s>

Strikethrough each line instead

<s>hey</s>
> <s>there</s>

hey

there


(Matt Maier) #10

Thanks, but I wasn’t asking for a work around. I was pointing out that this bug still exists. It’s weird that the preview gets it right but the actual render doesn’t.


(Jeff Atwood) #11

It’s unlikely we will be “fixing” this bug anytime soon, so plan accordingly :wink:


(Mittineague) #12

I’m not so sure this is a bug. Phrasing content can’t be expected to work well with Flow content that is not itself Phrasing content. eg. <div> or <p> tags.

https://html.spec.whatwg.org/multipage/dom.html#flow-content
https://html.spec.whatwg.org/multipage/dom.html#phrasing-content

What would be required is to parse the single opening and closing <s> tags to multiple tags within the parent Flow content elements.

IMHO, that is most likely a bit much for something that is edge case and has an existing workaround.


(Kane York) #13

What’s happening is the browser is applying an age-old fix by copying the <s> onto each paragraph until the close tag. The server uses Nokogiri which does not Reconstruct the active formatting elements but instead inserts a close tag for the strikethrough at the end of paragraph, as you would for any non-formatting mis-nested tag.

It’s officially specified as applying to a, b, big, code, em, font, i, nobr, s, small, strike, strong, tt, and u.

See https://html.spec.whatwg.org/multipage/parsing.html#misnested-tags:-b-i-/b-/i:reconstruct-the-active-formatting-elements


(Sam Saffron) #14

I am not against somebody submitting a patch nokogiri that works around this issue, or gives it a mode where it is able to handle it and we use it.

But I am moving this to feature … cause technically you provided bad HTML, if anyone is passionate about this raise it on the CommonMark site or Nokogiri bug tracker.