Уценка Python обеспечивает <ul>без необходимости в предыдущей пустой строке - PullRequest
0 голосов
/ 05 февраля 2019

Я обнаружил различия между python markdown и markjs , когда я переключился с клиентского на серверный рендеринг.

Рассмотрим следующую уценку:

**bold text**
* list item 1
* list item 2
* list item 3

markjs изящно создаст список неупорядоченных html-списков из этого:

<p>
  <strong>bold text</strong>
</p>
<ul>
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
</ul>

, в то время как python-markdown создает:

<p>
  <strong>bold text</strong>
  <em> item1</em> item2
* item3
</p>

Кажется, проблема здесьчто python-markdown (следующий markdown.pl) не примет пропущенную пустую строку и перетянет первый элемент списка во внимание с помощью жирных тегов ...

Есть ли способ настроить уценку python для изящной обработки этого случаяв каком-то смысле пользователь не будет удивлен странным выводом html?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Поведение Python-Markdown в этом случае применимо к оригиналу от Джона Грубера (Вы можете проверить его на веб-сайте Markdown projects ).Возможно, вы можете написать расширение для Python-Markdown, чтобы изменить поведение.

Вы также можете взглянуть на python-markdown2, у них есть возможность изменить поведение синтаксического анализатора для принятия списка без новой строки (обнимаемые списки):

import markdown2

md_text = "**bold text**
* list item 1
* list item 2
* list item 3"

md = markdown2.markdown(md_text, extras=['cuddled-lists'])
print(md)

Thisрезультаты:

полужирный текст

  • элемент списка 1
  • элемент списка 2
  • элемент списка 3
0 голосов
/ 05 февраля 2019

Есть ли способ настроить уценку Python для изящной обработки этого случая

Вы можете написать расширение. API-расширение Python-Markdown обеспечивает доступ ко всему синтаксическому анализатору, так что вы можете переопределить любую его часть.Поэтому, если вы хотите изменить поведение так, чтобы пустая строка не требовалась для начала списка, вы можете заменить соответствующий blockprocessors своим собственным.

Обратите внимание, что разработчики Python-Markdown имеют явно заявили , что они не заинтересованы в поддержке Commonmark.Следовательно, любая работа по приведению Python-Markdown в соответствие с Commonmark должна выполняться как сторонние расширения.

Что касается элементов списка, распознаваемых как выделение, это ошибка, о которой я только что сообщил как проблема # 783 .Спасибо, что обратили на это наше внимание.

Полное раскрытие: я ведущий разработчик Python-Markdown.

...