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

Поддержка ссылок WikiLinks в разметке Markdown

Синтаксис:

import markdown

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

Параметры:

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

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

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

Описание:

Расширение markdown.extensions.wikilinks добавляет поддержку WikiLinks. В частности, любое слово [[в квадратных скобках]] преобразуется в ссылку.

Слово [[в квадратных скобках]] представляет собой любую комбинацию букв верхнего или нижнего регистра, цифр, дефисов, подчеркиваний и пробелов, заключенных в двойные скобки. Следовательно, разметка [[Bracketed]] преобразуется в HTML:

<a href="/Bracketed/" class="wikilink">Bracketed</a>

Обратите внимание, что ссылкам WikiLink автоматически назначается class='wikilink', что упрощает стилизацию ссылок WikiLink, отличных от других ссылок на странице, если это необходимо.

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

# разметка
[[Wiki Link]]

# преобразуется в HTML
<a href="/Wiki_Link/" class="wikilink">Wiki Link</a>

По умолчанию каждая ссылка указывает на корень документа текущего домена и закрывается косой чертой в конце.

Следующие параметры позволяют изменить поведение по умолчанию:

  • base_url: строка для добавления в начало URL. По умолчанию: '/'.
  • end_url: строка, добавляемая в конец URL-адреса. По умолчанию: '/'.
  • html_class: класс CSS. Оставьте поле пустым. По умолчанию: wikilink
  • build_url: вызываемый, форматирующий URL-адрес из его частей.

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

Например, предположим, что ссылки всегда должны указывать на подкаталог /wiki/ и заканчиваться на .html.

>>> import markdown
>>> from markdown.extensions.wikilinks import WikiLinkExtension
>>> html = markdown.markdown(text,
...     extensions=[WikiLinkExtension(base_url='/wiki/', end_url='.html')]
... )

Этот код приведет к следующей ссылке для [[WikiLink]].

<a href="/wiki/WikiLink.html" class="wikilink">WikiLink</a>

Если надо просто изменить базу и/или конец URL-адреса, также можно передать вызываемый объект, который должен принимать три аргумента (label, base, end). Вызываемый объект должен полностью возвращать URL.

>>> def my_url_builder(label, base, end):
...    # что то делаем с аргументами
...    return url
...
>>> html = markdown.markdown(text,
...     extensions=[WikiLinkExtension(build_url=my_url_builder)],
... )

Также предоставляется возможность изменить или удалить атрибут класса.

>>> html = markdown.markdown(text,
...     extensions=[WikiLinkExtension(html_class='myclass')]
... )

Это приведет к тому, что все WikiLink будут назначены классу myclass.

<a href="/WikiLink/" class="myclass">WikiLink</a>