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, так как это необходимо разработчикам там.

Чувствую себя как человеческий SMTP-сервер, пересылающий сообщения между двумя серверами, которые точно не общаются друг с другом

:stuck_out_tongue_winking_eye: :crazy_face:

С моей точки зрения, это работает в браузере из-за его особенности, а не как функция HTML. Тег strike не предназначен для охвата блоков div и абзацев.

Понятно. :innocent: И если группа Nokigiri реализует эту просьбу, со временем это дойдет и до Discourse. Так что, не могли бы вы предоставить:

nokogiri -v 

результат выполнения, так как мне нужно добавить это в описание ошибки, как вы и команда Nokigiri просили, потому что с точки зрения конечного пользователя это сейчас выглядит как обман в Discourse:

(Обратите внимание на предварительный просмотр и итоговый вывод)

:sob:

Я не поддерживаю изменение nokogiri. Если это необходимо из-за множества жалоб от клиентов, мы можем очистить эти элементы, чтобы превью соответствовало, или открыть баг-репорты в Chrome и Firefox.

:thinking:

Очистка входных данных предпросмотра тоже допустима:

  • по крайней мере, это последовательно с точки зрения интерфейса.
  • Это не то, что я хочу, но с этим придётся смириться…

:grin: :innocent:

Хватит на сегодня глупых взаимодействий с конечными пользователями: я дам вам вернуться к более важным вещам, таким как реальная разработка:wink:

@sam В соответствии с обсуждением вне сети, был открыт вопрос в nokogiri, где нам сообщили, что на самом деле это CRuby использует libxml2.

Поэтому был открыт новый вопрос в репозитории libxml2, чтобы в конечном итоге это было включено в nokogiri, а затем в Discourse, и @alexs, @codinghorror, @mattman, @Mittineague, @riking смогут быть ещё счастливее, когда зачёркивание будет работать на нескольких строках.

Приношу извинения всем за такую педантичность, но:

Легкие люди адаптируются к своей среде, тогда как сложные люди настаивают на том, чтобы их среда адаптировалась к ним. Следовательно, весь человеческий прогресс — от приручения огня, колеса, пирамид, пенициллина… до принуждения электронов проходить через квантовый туннель для создания SSD-накопителей можно приписать сложным людям!

:grin: :wink: