Skip to content

Spearance/markdown-p3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

112 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Класс Markdown для Parser 3

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

Вызов

@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><img ...><figcaption>...</figcaption></figure> }
		$.figure(1)
		^rem{ добавить атрибут loading="lazy" }
		$.lazy(1)
	]
]]

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

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

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

Ссылки

  • Поддержка стандартной разметки ссылок для текста и картинок.
  • Автоматический парсинг ссылок и электронной почты без специального выделения.
  • Поддержка угловых скобок для электронной почты <example@mail.ru>.
  • Отмена выделения ссылки через обрамление бэктиками.
  • Отмена автовыделения ссылок внутри строк кода — ! перед ссылкой.
  • Отмена автовыделения электронной почты — ! перед ссылкой.

Инлайн стили

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

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

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

*[HTML]: HyperText Markup Language

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

В процессе обработки инлайн тегов происходит обратная замена <abbr title="HyperText Markup Language">HTML</abbr>.

Код

  • Код инлайновый в одиннарных бэктиках code.
  • Код с отступами 4 пробела или один символ табуляции.
  • Код за «забором» в тройных бэктиках.
  • Код за «забором» с подсветкой, используется highlight.js с поддержкой 192 языков, включая Parser 3. Для явно указанных языков назначается соответствующий класс в теге:
<code class="language-parser"># код Parser 3</code>

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

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

Типографика

Набор Преобразование
(с) ©
(r) ®
(tm)
(P)
--
...

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

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

Особенности

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

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

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

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

Этот текст содержит &lt;b&gt;теги&lt;/b&gt;.

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


Описание и примеры разметки взяты здесь.

About

Класс Markdown для Parser 3

Topics

Resources

License

Stars

Watchers

Forks