-
Notifications
You must be signed in to change notification settings - Fork 1
ru config options
Здесь приведён список настроек, используемых при разборе и отрисовке документа, а также их значения по умолчанию.
При создании экземпляра класса Parser, его настройки можно перекрыть:
use axy\ml\Parser;
$options = [
'escape' => false,
'tab' => 5,
];
$parser = new Parser($options);
Исходный текст преобразуется следующим образом:
- Все переносы строк в разных форматах заменяются на символ
\n
- Все знаки табуляции заменяются на последовательность из пробелов.
Количество пробелов на один таб задаётся опцией tab
.
Внутри, при разборе текста, для переноса строк всегда используется \n
, но при выводе его можно заменить на другой формат:
$parser = new Parser([
'nl' => "\r\n",
'tab' => 4,
]);
По умолчанию, все HTML-сущность в тексте экранируются.
Это можно отключить с помощью опции escape=FALSE
.
Если определить функции textHandler
и все тексты буду пропускаться через неё.
Можно использовать для добавления типографики.
Например, заменить --
на тире:
$parser = new Parser([
'textHandler' => function (text) {
return \str_replace($text, '--', '—');
},
]);
Если определён textHandler
, а escape
не сброшен, то сначала текст пропускается через обработчик, а затем экранируется.
Данное поведение также используется и для содержимого заголовков.
Теги сами решают, использовать или нет данные настройки.
По умолчанию, заголовок выводится через тег <hX>
.
Если у него есть имя, то оно выводится в атрибуте id
.
То есть заголовок
##[name] This is Header
Выводится как
<h2 id="name">This is Header</h2>
Содержимое заголовка экранируется и обрабатывается одинаково с простым текстом (см. выше).
Все заголовки с уровнем выше 6, выводятся, как <h6>
.
Начало нумерации задаёт опция hStart
.
Её можно сдвинуть.
Если hStart=3
, то #
будет <h3>
, а ###
будет <h5>
.
Либо можно определить функцию hHandler
для отрисовки заголовков:
$parser = new Parser([
'hHandler' => function (h) {
return '<div class="h'.$h->level.'">'.$h->content.'</div>';
},
]);
Данная функция получает единственным аргументом объект со свойствами:
-
content
- содержимое заголовка -
level
- уровень (начиная с 1) -
name
- имя (якорь, NULL - если не указан)
Что функция возвращает, то и выводится без какого-либо экранирования и т.п.
Абзац, по умолчанию заключается в <p>
.
Используемый тег можно изменить с помощью bTags
или вообще сбросить через bTags=['', '']
.
Либо определить функцию bHandler
.
На вход она получает вёрстку содержимого абзаца, на выходе - вёрстка абзаца.
Блок, это: абзац, заголовок, отдельно стоящий тег (из тех, что не создают для себя абзацев, например [HTML]
).
По умолчанию они в итоговой вёрстке отделяются пустой строкой для красоты.
Если красота не нужна, можно убрать и сэкономить пару байтов.