У меня есть пользователи, которые некорректно редактируют синтаксис цитат, из-за чего функция цитирования не работает. Например, вот такой случай из текущей темы. Здесь экранирование отсутствует:
[quote=“CFO.Digest.Input, post:1, topic:3258”]
он предложил, чтобы я снова добавил минеральное масло. [/quote]
Проблема в том, что закрывающий тег [/quote] находится в потоке текста, тогда как открывающий тег стоит на отдельной строке. Я выяснил, что можно использовать любой из вариантов, но они должны совпадать. Например, это работает (апостроф добавлен для экранирования функции):
'[quote=“CFO.Digest.Input, post:1, topic:3258”]
он предложил, чтобы я снова добавил минеральное масло.
'[/quote]
и это тоже работает:
'[quote=“CFO.Digest.Input, post:1, topic:3258”]он предложил, чтобы я снова добавил минеральное масло.[/quote]
… но смешивать эти режимы нельзя.
Я знаю, что кто-то скажет: «тогда не делайте так» или «используйте кнопку цитирования», но у нас всё ещё есть пользователи, которые не делают это правильно.
Разве нет способа парсить такой текст так, чтобы режимы можно было смешивать?
О боже… так что мы, по сути, навязываем стандарты кодирования нашим клиентам и пользователям?
Хотя я согласен с анализом Сэма касательно формата, есть разница между тем, что текст сложен для чтения самим автором, и тем, что он сложен для чтения всеми, кто просматривает пост. Похоже, мы наказываем читателей за грехи автора…
Полагаю, я продолжу редактировать посты, когда люди допускают ошибки в их оформлении.
Редакция: Другой вариант — принудительно добавлять перенос строки после [/quote], если его там нет… автоматически исправлять формат ради читаемости.
Это кажется неплохой идеей, но если они просто выделят текст и нажмут кнопку цитирования, всё работает. Они возвращаются, редактируют цитату и ломают форматирование?
Да, они! В самом деле, довольно удивительно… и при этом они даже не замечают, что нарушают формат. Думаю, у них не включен предпросмотр? Или, может быть, они делают это с телефона…
А тот, кто это сделал, — один из принципов в бизнесе… рад, что не сделал его редактором!
Ага! Мобильная версия — хороший вариант. Сложно подобрать идеально, а потом вы будете действовать неуклюже и у вас не будет предварительного просмотра, когда вы попытаетесь это «исправить».
Я отредактировал пост, добавив возврат каретки после закрывающего тега цитаты, но всё же удивлён, что поток текста не обрабатывается как HTML, где переводы строк и возвраты каретки не влияют на работу тегов. Мне кажется, это ошибка…
Порядок не случайный, всё в порядке. Но, в отличие от HTML, в этой системе важно, где именно оказываются переводы строк.
Чтобы исправить этот сломанный пост, достаточно было добавить перевод строки / CR после закрывающего тега.
Я готов продолжать вручную редактировать посты, когда пользователи не соблюдают требуемую структуру, но всё же странно, что парсеру важны переводы строк…
Ознакомьтесь со спецификацией Markdown. В отличие от HTML, Markdown полностью зависит от правильно расставленных переносов строк.
Лишний перенос строки в элементе <h1> не повлияет на отображение, но:
здесь, в мире Markdo
wn, это имеет значение
Это верно для многих элементов: дополнительные переносы строк ужасно ломают таблицы в Markdown. В то же время таблицы HTML не подвержены такой проблеме.
Не уверен, что аналогия с HTML уместна или полезна: пользователей не просят писать HTML. Можете представить себе боль от отсутствия тегов <p></p> и <br>? Это буквально стены текста.
Если вы мыслите в парадигме «сначала Markdown», которая является основой Discourse, а не «сначала HTML», чего Discourse точно не делает, то проблемы, возникающие при вставке тегов без учёта структуры, начинают казаться вполне понятными.
Я, как и любой программист, готов справляться с такими задачами, но наши пользователи — обычные люди, и они могут подумать, что Markdown имеет какое-то отношение к ценам в Walmart.
Как вы верно заметили, к счастью, мы не просим их писать на HTML! Но что даёт принуждение их к использованию разметки Markdown? Кажется, что небольшая доля программирования помогла бы оградить их от этих реалий нашего мира.
Я не знаю, насколько сложно было бы автоматически добавлять новую строку после [/quote] (если только это не находится внутри блока кода или чего-то подобного…), и я понимаю, что при использовании Markdown нужно соблюдать определённую структуру.
Но я также понимаю, как это может раздражать, когда в сообщении пользователя появляется некорректный цитатный блок из-за такой мелкой «ошибки», как написание текста на той же строке, что и [/quote] (не уверен, что это вообще можно назвать ошибкой).
Существует ли какой-либо осмысленный случай, когда текст пишется на той же строке, что и [quote]?
Если таких случаев нет, то я считаю, что нет никаких причин для существования текста на той же строке, и принудительный перенос строки после закрывающего тега цитаты мог бы быть полезен как пользователям, так и администраторам. Но я также уверен, что это не так просто, как кажется.
Верно. Основная суть Markdown заключается в том, что одна новая строка (или две) эквивалентна тегу абзаца. Из-за этого некоторые теги требуют наличия переносов строк до или после них для корректной интерпретации. Это, как я полагаю, часть спецификации.