Умные кавычки ломают шаблон цитаты

На двух разных сайтах Discourse я столкнулся с проблемой: при выделении текста и нажатии кнопки «Цитата» для ответа в одном месте используются «умные» кавычки, что нарушает отображение моего поста. Ниже приведён скриншот примера поста, который отображается некорректно из-за «умной» кавычки в конце первой строки (внутри скобок):

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

Мне удаётся воспроизвести это примерно в 50 % случаев в Safari 18.4 на Mac OS 15.4, а также в более ранней версии Safari на Mac OS 15.3.

Сайт, который я администрирую, где я это наблюдаю, работает на версии Discourse 3.4.2. На другом сайте, где я недавно столкнулся с этой проблемой, установлена версия 3.4.0.beta3-dev.

Кажется, я также видел, что другие пользователи сталкиваются с этой проблемой на моём сайте, но сегодня я не проверял это повторно.

1 лайк

Очевидно, что для исправления бага необходимо внести настоящее исправление, но на случай, если это будет полезно до тех пор, я упомяну, что временным решением может быть удаление двойных кавычек из настройки сайта «Markdown typographer quotation marks» или отключение настройки сайта «Enable markdown typographer». Я предполагаю, что именно функция «Markdown typographer» вызывает замену правильного символа прямой двойной кавычки в теге BBCode на неправильный символ «умных» или «фигурных» кавычек.

Хорошее предположение, но я помню похожую проблему несколько лет назад и припоминаю, что у нас в Discourse даже есть код, преобразующий «→» в «

Новый композитор также не включён.

Другой пользователь сообщает, что если отключить подстановку умных кавычек в Safari в разделе Правка → Подстановки → Умные кавычки, это исправит проблему.

Хотя я не очень хочу этого делать, lol. Мне нравятся умные кавычки большую часть времени.

Я думаю, что это и есть причина проблемы, в дополнение к тому факту, что мы имитируем ввод пользователя в textarea при добавлении такого типа, чтобы не потерять историю отмены.

Полагаю, это можно «решить», установив spellcheck="false" для элемента, но у этого есть очевидный недостаток.

Причиной проблемы является несоответствие кавычек: всё работало бы, если бы кавычки на обоих концах были одного стиля. Можно использовать любой из следующих наборов:

Странно, что при цитировании преобразовалась только вторая кавычка, хотя при ручном вводе одного и того же BBCode преобразуются обе стороны.

2 лайка

Проблема тоже непостоянная. Она возникает не каждый раз, хотя я так и не понял, когда она появляется, а когда нет.

Забавно, что работает с таким количеством разных вариантов кавычек, а этот — нет. Интересно…

Неужели это было бы простым исправлением, которое не вызовет проблем, если привести к единому стилю несовместимые кавычки? В частности, " и ".

Стоит ли нам доработать наш парсер, чтобы он поддерживал пару « ” и различные малоизвестные, странные кавычки, которые попадают в bbcode?

1 лайк