Сообщить об ошибке.

Расширение sane_lists модуля markdown в Python

Определение списков в документах Markdown

Синтаксис:

import markdown

html = markdown.markdown(some_text, extensions=['sane_lists'])

Параметры:

  • some_text - разметка Markdown,
  • extensions - список расширений модуля.

Возвращаемое значение:

  • текст в формате HTML.

Описание:

Расширение markdown.extensions.sane_lists изменяет поведение синтаксиса определения списков в документах Markdown, делая его более предсказуемым.

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

1. Ordered item 1
2. Ordered item 2

* Unordered item 1
* Unordered item 2

Приведет к следующему выводу:

<ol>
  <li>Ordered item 1</li>
  <li>Ordered item 2</li>
</ol>

<ul>
  <li>Unordered item 1</li>
  <li>Unordered item 2</li>
</ul>

В то время как поведение Markdown по умолчанию будет заключаться в создании неупорядоченного списка.

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

A Paragraph.
* Not a list item.

1. Ordered list item.
* Not a separate list item.

С этим расширением приведенное выше приведет к следующему выводу:

<p>A Paragraph.
* Not a list item.</p>

<ol>
  <li>Ordered list item.
  * Not a separate list item.</li>
</ol>

Расширение sane_lists также распознают число, используемое в упорядоченных списках. Учитывая следующий список:

4. Apples
5. Oranges
6. Pears

По умолчанию модуль markdown игнорирует тот факт, что первая строка начинается с номера позиции 4, а полученный список HTML будет начинаться с номера 1. Это расширение приведет к следующему выводу HTML:

<ol start="4">
  <li>Apples</li>
  <li>Oranges</li>
  <li>Pears</li>
</ol>

Во всем остальном sane_lists ведет себя как обычные списки Markdown.

Пример определения списка в разметке Markdown.

import markdown
text = """
4. Apples
5. Oranges
6. Pears
"""
html = markdown.markdown(text, extensions=['sane_lists'])
print(html)
# <ol start="4">
#   <li>Apples</li>
#   <li>Oranges</li>
#   <li>Pears</li>
# </ol>