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

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

Добавление изолированных блоков кода в Мarkdown

Синтаксис:

import markdown

html = markdown.markdown(text, extensions=['fenced_code'])

Параметры:

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

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

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

Описание:

Расширение markdown.extensions.fenced_code добавляет дополнительный способ определения изолированного блоков кода, которые определяются с использованием синтаксиса, популяризированного в GitHub Flavored Markdown.

Изолированные блоки кода начинаются с трех или более обратных кавычек ``` или тильд ~~~ в отдельной строке и заканчиваются соответствующим набором обратных кавычек или тильд, так же в отдельной строке. Заключительный набор должен содержать такое же количество и тип символов, что и открывающий набор. Рекомендуется размещать пустую строку до и после блока кода.

Абзац перед блоком кода.

```
Однострочный блок кода 
```

Абзац после блока кода.

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

Определение языка программирования в блоке кода

Язык кода в блоке кода может быть указан для использования для подсветки синтаксиса и т. д. Язык должен начинаться с точки и не содержать пробелов .language-name.

``` { .html }
<p>HTML Document</p>
```

Если язык кода является единственным параметром, то фигурные скобки и/или точка могут быть исключены:

``` html
<p>HTML Document</p>
```

Определение дополнительных классов для блока кода.

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

``` { .html .foo .bar }
<p>HTML Document</p>
```

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

В приведенном выше примере будет выведен следующий HTML-код:

<pre class="foo bar"><code class="language-html">&lt;p&gt;HTML Document&lt;/p&gt;
</code></pre>

Определение идентификатор id для блока кода.

Для блока кода может быть определен идентификатор id, что позволит ссылаться на блок кода, используя хеш URL. Другими словами, из любого места в том же документе можно будет ссылаться на блок кода с помощью [link](#example). Имя идентификатора должно начинаться с символа решетки # и содержать только символы, разрешенные в атрибутах идентификатора HTML.

``` { #example }
A linkable code block
```

Атрибут id присваивается тегу <pre>. В приведенном выше примере будет выведен следующий HTML-код:

<pre id="example"><code>A linkable code block
</code></pre>

Идентификатор id могут быть определены вместе с языком блока кода и другими классами или любыми другими поддерживаемыми атрибутами.

``` { #example .lang .foo .bar }
A linkable code block
```

Пример создания изолированного блока кода в разметке Мarkdown:

import markdown
text = """
``` { #example .html .foo .bar }
<p>HTML Document</p>
```
"""
html = markdown.markdown(text, extensions=['fenced_code'])
print(html)
# <pre id="example" class="foo bar"><code class="language-html">&lt;p&gt;HTML Document&lt;/p&gt;
# </code></pre>