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.

ご依頼通り、Nokogiri のバグ報告を提出しました リクエストに応じて

開発者が必要としているのは nokogiri -v の出力ですので、その結果をお知らせください。

まるで、明らかに互いに通信していない 2 つのサーバーの間でメッセージを中継する人間の SMTP サーバーのようです

:stuck_out_tongue_winking_eye: :crazy_face:

私の見解では、これは HTML の機能ではなくブラウザのバグによりブラウザ内で動作しているものです。strike タグは div や段落にまたがることを意図していません。

了解しました。:innocent: Nokigiri グループがこの機能リクエストを実装すれば、最終的には Discourse にも反映されるはずです。そこで、以下の nokogiri -v の出力をいただけますでしょうか?ご要望および Nokigiri の要望通り、バグの説明に追加する必要があります。エンドユーザーの観点から見ると、Discourse においてこれは「手口を隠す」ように見えるからです:

(プレビューと最終出力にご注意ください)

:sob:

nokogiri の変更には賛成しません。複数の顧客からの苦情により変更が必要であれば、プレビューと一致するようにこれらの要素をサニタイズするか、Chrome と Firefox にバグ報告を出しましょう。

:thinking:

プレビュー入力のサニタイズも許容されます:

  • 少なくとも UI の観点から一貫性があります。
  • 私が望むものではありませんが、我慢するしかないでしょう…

:grinning_face_with_smiling_eyes: :innocent:

今日のためのバカなエンドユーザーとのやり取りはこれで十分です。実際の開発など、より重要なことに戻っていただきましょう… :wink:

@sam オフラインでの議論に基づき、nokogiri に issue を作成しました。同プロジェクトからは、実際には CRuby が libxml2 を使用していると回答がありました。

そのため、最終的に nokogiri に取り込まれ、Discourse が対応できるようになることを期待して、libxml2 側にも新たな issue を作成しました。これにより、@alexs @codinghorror @mattman @Mittineague @riking の皆様が、複数行にわたる取り消し線が機能するようになることで、より幸せになれることを願っています。

この件については非常に細かくなってしまい、皆様にお詫び申し上げますが:

「楽観的な人々は環境に適応するが、困難な人々は環境が自分たちに適応することを求める。したがって、火の制御、車輪、ピラミッド、ペニシリン、……から、電子を量子トンネルに通して SSD ストレージを実現するに至るまで、すべての人類の進歩は、困難な人々によるものである!」

:grin: :wink: