Multi-Line Strikethrough Not Covering Quotes

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 -

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.

Works fine in Markdown.it

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

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

Let’s see

Some text

a quote

raw

<s>Some text

> a quote

</s>

This still happens.

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

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

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

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.

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

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.

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

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.

Ecco il bug di Nokogiri segnalato per tuo conto come da tua richiesta:

Potresti gentilmente inviarmi l’output di nokogiri -v, poiché è quello di cui hanno bisogno gli sviluppatori lì.

Mi sento come un server SMTP umano che inoltra messaggi tra due server che di certo non stanno parlando tra loro

:stuck_out_tongue_winking_eye: :crazy_face:

A mio avviso, funziona nel browser a causa di un comportamento imprevisto del browser, non di una funzionalità HTML: il tag strike non è inteso per attraversare div e paragrafi.

Compreso. :innocent: E se il gruppo Nokigiri implementerà questa richiesta di funzionalità, alla fine arriverà anche a Discourse. Quindi posso avere l’output di:

nokogiri -v 

per favore, dato che devo aggiungerlo alla descrizione del bug come richiesto da te e da Nokigiri, perché dal punto di vista dell’utente finale ora sembra un cambio di rotta in Discourse:

(Tieni presente l’anteprima e l’output finale)

:sob:

Non sono a favore della modifica di nokogiri; se fosse necessario a causa di molteplici segnalazioni da parte dei clienti, possiamo sanificare questi elementi in modo che l’anteprima corrisponda, oppure aprire bug su Chrome e Firefox.

:thinking:

Anche la sanitizzazione dell’input di anteprima è accettabile:

  • almeno è coerente dal punto di vista dell’interfaccia utente.
  • Non è quello che vorrei, ma è qualcosa con cui dovrò convivere…

:grin: :innocent:

Abbastanza interazione con l’utente finale stupida per oggi: vi lascio tornare a cose più importanti come lo sviluppo effettivo:wink:

@sam Come discusso offline, è stato aperto un issue su nokogiri, che ci ha comunicato che in realtà è CRuby a utilizzare libxml2.

Di conseguenza, è stato aperto un nuovo issue su libxml2 in modo che, in futuro, la correzione venga integrata in nokogiri, e poi in Discourse, permettendo a @alexs @codinghorror @mattman @Mittineague @riking di essere tutti più felici perché l’effetto barrato funziona su più righe

Mi scuso con tutti per essere così pedante riguardo a questo, ma:

Le persone facili si adattano al proprio ambiente, mentre le persone difficili insistono affinché sia l’ambiente ad adattarsi a loro. Pertanto, tutto il progresso umano, dall’addomesticamento del fuoco, della ruota, delle piramidi, della penicillina… fino alla forzatura degli elettroni attraverso un tunnel quantistico per ottenere archiviazione SSD può essere attribuito alle persone difficili!

:grin: :wink: