An open API service indexing awesome lists of open source software.

https://github.com/spearance/markdown-p3

Класс Markdown для Parser 3
https://github.com/spearance/markdown-p3

markdown parser3

Last synced: 4 months ago
JSON representation

Класс Markdown для Parser 3

Awesome Lists containing this project

README

          

# Класс Markdown для Parser 3

Преобразует Markdown разметку в HTML.

## Вызов

``` parser
@USE
markdown.p

# статически
^markdown:parse[Text with [link](https://github.com "GitHub").]

# или объект класса
$markdown[^markdown::create[
^rem{ включать внутрь разметки HTML (небезопасно) }
$.innerHTML(0)
^rem{ менять в тексте шорткаты на эмодзи }
$.emoji(1)
^rem{ заменять сочетания символов }
$.typograph(1)
^rem{ подсвечивать код }
$.highlight(0)

^rem{ настроить ссылки }
$.links[
^rem{ добавить в начало ссылки часть пути или имя сервера }
$.path[//$env:SERVER_NAME|/some-path]
^rem{ добавлять атрибут target="" }
$.target[_blank|_self|...]
^rem{ добавлять атрибут rel="" }
$.rel[next|prev|nofollow|...]
]

^rem{ настроить картинки }
$.images[
^rem{ добавить в начало ссылки часть пути или имя сервера }
$.path[//$env:SERVER_NAME|/some-path]
^rem{ добавлять атрибут class="" }
$.class[классы через пробел]
^rem{ оборачивать в ... }
$.figure(1)
^rem{ добавить атрибут loading="lazy" }
$.lazy(1)
]
]]

^markdown.parse[Text with [link](https://github.com "GitHub").]
```

## Поддержка тегов

* Заголовки (H1—H6)
* Абзацы
* Переводы строк
* Картинки с поддержкой alt и title
* Цитаты
* Списки нумерованные, ненумерованные, смешанные
* Горизонтальная линия
* Таблицы

### Ссылки

* Поддержка стандартной разметки ссылок для текста и картинок.
* Автоматический парсинг ссылок и электронной почты без специального выделения.
* Поддержка угловых скобок для электронной почты ``.
* Отмена выделения ссылки через обрамление бэктиками.
* Отмена автовыделения ссылок внутри строк кода — `!` перед ссылкой.
* Отмена автовыделения электронной почты — `!` перед ссылкой.

### Инлайн стили

* Жирный
* Курсив
* Жирный-курсив
* Зачёркнутый
* Подчёркнутый
* Маркированный
* Верхний/нижний индексы

### Аббревиатуры

Перед обработкой разметки из нее достаются строки словаря по шаблону:

```*[HTML]: HyperText Markup Language```

Сами строки при этом удаляются.

В процессе обработки инлайн тегов происходит обратная замена `HTML`.

### Код

* Код инлайновый в одиннарных бэктиках `code`.
* Код с отступами 4 пробела или один символ табуляции.
* Код за «забором» в тройных бэктиках.
* Код за «забором» с подсветкой, используется [highlight.js](https://highlightjs.org/) с поддержкой 192 языков, включая Parser 3. Для явно указанных языков назначается соответствующий класс в теге:

``` HTML
# код Parser 3
```

### Служебные символы

Поддерживаются экранированные служебные символы, перед которыми стоит обратный слеш `\`.

### Типографика
| Набор| Преобразование |
|:----:|:--------------:|
| (с) | © |
| (r) | ® |
| (tm) | ™ |
| (P) | ₽ |
| -- | — |
| ... | … |

### Шорткаты и эмодзи

Поддерживается преобразование популярных шорткатов `:-)` в эмодзи `🙂`, также поддерживаются текстовые `:sunglasses:` преобразования `😎`.

## Особенности

По умолчанию HTML разметка внутри Markdown не допускается, угловые скобки тегов будут заменены на символы мнемоники.

Исходный код:

``` markdown
Этот текст содержит теги.
```

Преобразованный код:

``` markdown
Этот текст содержит <b>теги</b>.
```

Включить HTML разметку можно через настройки экземпляра класса параметром `$.innerHTML(1)`, но это может быть небезопасно, если вы сохраняете Markdown из формы или других внешних источников.

***

Описание и примеры разметки взяты [здесь](https://www.markdownguide.org).