Как работает расширение MarkDig UseSoftlineBreakAsHardlineBreak? - PullRequest
0 голосов
/ 02 мая 2019

Markdig - популярный обработчик разметки для .net.При настройке конвейера для markdig одним из параметров является «Мягкие линии как жесткие линии», которые можно настроить следующим образом:

var pipeline = new MarkdownPipelineBuilder()
                  .UseSoftlineBreakAsHardlineBreak()
                  .Build();

И в соответствии с документацией «Когда этоЕсли используется расширение, новая строка в блоке абзаца приведет к жесткому разрыву строки "

This is a paragraph
with a break inside
.
<p>This is a paragraph<br />
with a break inside</p>

Однако, когда я пытаюсь использовать это расширение, поведение, которое я наблюдаю, отличается от приведенного в примере.Вывод, который я наблюдаю, такой же, как и без расширения:

<p>This is a paragraph</p>
<p>with a break inside</p>

Почему-то я не думаю, что правильно понимаю это расширение UseSoftlineBreakAsHardlineBreak.Может ли кто-нибудь объяснить, что я вижу в стихах, приведенных в приведенных документах?

1 Ответ

1 голос
/ 02 мая 2019

Ключ к пониманию разницы между незначительным пробелом и значительным пробелом в HTML.Поведение normal описывается следующим образом:

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

Следовательно, этот абзац:

<p>This is a paragraph
with a break inside</p>

отображается как:

Это абзацс разрывом внутри

Если вы используете в браузере инструмент «просмотр источника» или «проверка», вы можете видеть, что разрыв строки сохраняется в HTML, но браузер обрабатывает его как пробел,Расширение UseSoftlineBreakAsHardlineBreak вставляет элемент <br />, поэтому браузер сохраняет разрыв строки.

Другими словами, при UseSoftlineBreakAsHardlineBreak вывод HTML становится следующим:

<p>This is a paragraph<br />
with a break inside</p>

который представляется как:

Это абзацс разрывом внутри

Обратите внимание, что сохранение разрывов строк, как это, является нестандартным поведением Markdown, но часто менее удивительно для пользователей, которые не знакомы с тем, как браузеры обрабатывают пробелы.


Наконец, я отмечаю, что в этом вопросе вы представляете нормальный результат (без UseSoftlineBreakAsHardlineBreak) следующим образом:

<p>This is a paragraph</p>
<p>with a break inside</p>

вместо ожидаемого результата:

<p>This is a paragraph
with a break inside</p>

Я предполагаю, что это была ошибка / недосмотр с вашей стороны при создании вашего вопроса.Если вы действительно получаете два отдельных абзаца (по одному для каждой строки), то это вообще отдельная проблема и, вероятно, это должен быть отдельный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...