Skip to content
Oleg Grigoriev edited this page Jan 17, 2014 · 2 revisions

Стандартные классы тегов

Классы отвечающие за стандартные теги расположены в пространстве имён axy\ml\tags.

Здесь описано их поведение и настройки по умолчанию. Как изменить настройки написано в соответствующем разделе.

Как написать свой класс написано в другом разделе.

HtmlTag - HTML-тег

Выводит соответствующий html-тег. [B] - <b>, [I] - <i>...

Настройки:

  • single (boolean) - тег является одиночным (следует закрывать с помощью />), по умолчанию FALSE.

Использование класса:

$parser = new Parser(null, [
    'strong' => 'HtmlTag',
    'abbr' => 'HtmlTag',
    'hr' => [
        'classname' => 'HtmlTag',
        'single' => true,
    ],
]);

Добавили тегов для <strong>, <abbr> и <hr />.

Scheme - ссылка

Выводит ссылку. Использует имя тега в качестве схемы урл. Среди стандартных тегов используют этот класс [HTTP] и [HTTPS].

Настроек нет.

$parser = new Parser(null, [
    'ftp' => 'Scheme',
]);

Теперь можно вставлять ftp-ссылки. [ftp://server.loc/file.txt Ссылка на файл].

Url - ссылка

  • css - css класс ссылки (по умолчанию нет).
  • handler - обработчик параметров.

Функция handler получает на вход объект с следующими свойствами:

  • url - адрес ссылки из тега.
  • caption - текст ссылки (уже экранированный). Если текст не указан - сама ссылка.
  • plain - текст ссылки для plain-вывода.
  • css - css-класс
  • context - контекст разбора.

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

  • Если ссылка начинается с "http://", считаем её внешней, вешаем css класс external и добавляем иконку к тексту.
  • Если ссылка относительная (начинается не с "/"), то считаем её путём в некоторой части сайта (например, в текущей языковой версии).
$parser = new Parser(null, [
    'url' => [
        'options' => [
            'handler' => function ($link) {
                if (\substr($link, 0, 7) === 'http://')) {
                    $link->css = 'external';
                    $link->caption .= ' <icon>';
                } elseif (\substr($link, 0, 1) !== '/')) {
                    $link->url = $link->context->custom->createLocalUrl($link->url);
                }
            },
        ],
    ],
]);

Img - изображение

  • handler - обработчик SRC. Аналогичен handler для [URL] (см. выше).

Code

  • tag_block - тег для блокового кода (по умолчанию pre)
  • tag_inline - тег для однострочного кода (по умолчанию code).
  • attr_lang - атрибут для указания языка (по умолчанию rel). Не указан - язык не выводится.
  • default_lang - язык, используемый если не указан явно (по умолчанию не определён).
  • lang - если указан, всегда используется в качестве языка.

Пример:

$parser = new Parser(null, [
    'code' => [
        'options' => [
            'tag_block' => '<div>',
            'tag_inline' => '<span>',
            'attr_lang' => 'lang',
            'default_lang' => 'php',
        ],
    ],
]);

Теперь вместо [CODE echo 2 + 2] выводится <span lang="php">echo 2 + 2</span>.

Ещё пример:

$parser = new Parser(null,
    'php' => [
        'classname' => 'Code',
        'options' => [
            'lang' => 'php',
        ],
    ],
]);

[PHP] соответствует [CODE], только игнорирует аргумент с языком и всегда использует в его качестве php.

Html, Tag, ClosingTag

Классы для [HTML], [TAG] и закрывающих тегов вроде [/B].

Настроек не имеют и выгода от их использования для других тегов сомнительно.

Clone this wiki locally