Discourse автоматически преобразует вставленный из буфера обмена список с разделителями-табуляциями в таблицу

Если пользователь копирует и вставляет

	```sh
	systemctl reboot
	```

в форму редактирования в Discourse, этот контент превращается в

||```sh|
|---|---|
||systemctl reboot|
||```|

Это ошибка — очевидно, что это список, а не таблица.

Я протестировал это на discuss.kde.org и meta.discourse.org.

	```sh
	systemctl reboot
	```
	```sh
	systemctl reboot
	```

@JammyDodger, попробуйте ещё раз. Я убрал нумерацию списка. Похоже, теперь это стабильно работает.


Кстати, когда вы цитируете свой комментарий, у меня получается:

[quote="JammyDodger, post:2, topic:266325"]
Перезагрузка:

0. ```
systemctl reboot
```

```
0.	Перезагрузка:
	```sh
	systemctl reboot
	```
```
[/quote]

…это правильно?

Признаюсь, я не до конца понимаю, что именно мне нужно копировать и вставлять на данном этапе. :slight_smile:

Ха-ха.

	```sh
	systemctl reboot
	```

При копировании текста со страницы путем выделения его мышью я получаю:

Но при копировании с помощью кнопки «Копировать»:

При вставке я получаю именно ожидаемый текст.

Содержимое буфера обмена при использовании кнопки «Копировать»:

TEXT:
b'```sh\n\tsystemctl reboot\n\t```'
text/plain:
b'```sh\n\tsystemctl reboot\n\t```'

Содержимое буфера обмена при выделении текста мышью на странице:

TEXT:
b'\t```sh\n\tsystemctl reboot\n\t```'
text/html:
b'<span style="color: rgb(199, 199, 199); font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace; font-size: 17.008px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(60, 60, 60); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">\t```sh\n\tsystemctl reboot\n\t```</span>'
text/plain:
b'\t```sh\n\tsystemctl reboot\n\t```'

Скорее всего, это табуляция в начале каждой строки сбивает с толку — возможно, если при парсинге содержимого буфера обмена первый столбец всегда пуст, мы не будем воспринимать это как список.

Это выглядит как довольно патологическая ситуация — возникает ли она в естественных условиях? Обычно в постах нет символов табуляции.

Для компьютера это выглядит в точности как таблица с разделителями-табуляцией и пустым первым столбцом.

7 лайков

За годы я усвоил одну вещь: никогда не доверяйте копированию и вставке через выделение мышью…

Это, вероятно, должно определяться пользователем с помощью

```tsv
```

В конце концов, таблица с разделителями-табуляциями не должна работать при включённом переносе строк, поэтому её необходимо заключить в элемент, который принудительно включает прокрутку.

И, конечно же, также из-за отступов (для обозначения списка или кодового блока с разделителями)

что также является очень допустимым (и распространённым) форматом Markdown.