1 (02.12.2016 06:17 отредактировано Visman)

Тема: [TEST] sva_parserus (парсер Parserus для PunBB)

Лежит тут https://github.com/MioVisman/punbb_exte … a_parserus

Мой парсер bb-кодов Parserus в виде расширения для форума.
Заменяет (или пытается заменить smile ) стандартный парсер.

Требования: PHP >= 5.4.0

Для своей работы использует хуки:

  • es_essentials - подключение автозагрузчика;

  • ps_start - первоначальные настройки парсера;

  • ps_parse_message_start - парсинг сообщений в html;

  • ps_parse_signature_start - парсинг подписей в html;

  • ps_preparse_bbcode_start - проверка введенных сообщений, удаление пустых bb-кодов, автодетект ссылок, возврат ошибок.

* Остальные хуки из include/parser.php (кроме хуков из функций handle_url_tag() и handle_img_tag()) не должны выполняться, так как остаются за бортом, в старом парсере.

Добавлены два (на данный момент) новых хука:

  • parserus_start_vars - для установки переменных перед стартом парсера:

    • $smilies - оригинальный массив смайлов

    • $smFolder - путь до папки со смайлами (по умолчанию $base_url . '/img/smilies/')

    • $smTpl - шаблон для отображения смайлов (по умолчанию '<img src="{url}" alt="{alt}">')

    • $whiteListForSign - массив bb-кодов разрешенных в подписи (по умолчанию ['b', 'i', 'u', 'color', 'colour', 'email', 'img', 'url'])

  • parserus_start_set - для настройки парсера (добавление новых bb-кодов, переменных парсера) после его инициализации.

    • $parser - ссылка на парсер (класс ParserusEx)

Сейчас парсер знает стандартные bb-коды (b, i, u, color, colour, h, quote, code, email, *, list, img, url) и spoiler (из моего расширения sva_spoiler).
Легко можно реализовать сложные bb-коды.
Пример на wiki  с реализацией таблицы с 11 параметрами в bb-коде:

[table align="right" border="1" bordercolor="#ccc" cellpadding="5" cellspacing="0" style="border-collapse:collapse; width:500px"]
       [tr]
           [th style=width:50%]Position[/th]
           [th style=width:50%]Astronaut[/th]
       [/tr]
       [tr]
           [td]Commander[/td]
           [td]Neil A. Armstrong[/td]
       [/tr]
       [tr]
           [td]Command Module Pilot[/td]
           [td]Michael Collins[/td]
       [/tr]
       [tr]
           [td]Lunar Module Pilot[/td]
           [td]Edwin "Buzz" E. Aldrin, Jr.[/td]
       [/tr]
[/table]

Вот такой текст

[url][img]http://localhost/punbb/img/avatars/2.gif[/img][b]картинка ссылка[/b][/url]

сейчас преобразовывается вот в такой html tongue

<a href="http://localhost/punbb/img/avatars/2.gif"><span class="postimg"><img src="http://localhost/punbb/img/avatars/2.gif" alt="2.gif" /></span><strong>картинка ссылка</strong></a>
Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

2

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

http://jpegshare.net/images/a8/91/a8912aa03f0252122613f5871ce1d158.png

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

3

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Как насчет тестирования производительности?

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

4

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

hcs, а это уже кто-нибудь на реальном сервере под Linux должен попробовать с большими сообщениями в темах, а то у меня на локальном компьютере строковые функцию показывают меньшую производительность чем регулярные выражения smile

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

5 (03.12.2016 03:36 отредактировано Visman)

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Тесты
Win 7
Конфигурация расширений одинаковая для обоих вариантов, но для первого столбца расширение установлено и работает, а для второго столбца расширение удалено в админке.

php 5.4.31

0.141    0.132
0.119    0.111
0.123    0.102
0.124    0.103
0.122    0.097
0.116    0.105
0.129    0.103
0.113    0.104
0.112    0.117
0.122    0.099
-------------
0.122    0.107 <- среднее


php 7.0.4

0.068    0.058
0.067    0.054
0.061    0.047
0.050    0.050
0.062    0.042
0.076    0.045
0.062    0.054
0.067    0.052
0.054    0.052
0.061    0.057
-------------
0.063    0.051 <- среднее

Тестировал на копии этой страницы: http://punbb.ru/topic3356-howto-sozdani … renii.html
Замеры показаны по счетчику выводимому при

define('FORUM_DEBUG', 1);
Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

6

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

раз уж вы разбирались с bbcode парсером - можно его в punbb отключить везде и совсем?

Добавлено спустя 1 минуту 29 секунд:

т.е. чтобы он не обрабатывал bbcode и не расходовал ресурсы.
у меня идея - сделать wisywig на базе contenteditable="true" или просто текст вводить для тех кто не поддерживает эту фичу

Добавлено спустя 8 минут 39 секунд:

отключить через расширения имеется ввиду а не модификацией кода punbb

Сайт Otto.Zukamoto

Поделиться

7

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Как то пытался отключить подключаемый в топике парсер и подключить свой написанный на классе, делал так :
Объявлял константу что мол файл уже подключен, а затем вешал на след хук подключение своего парсера. Все работало.
Хак конечно, другого способа не нашел )

Новые стили и расширения на  PunBB.INFO

Поделиться

8 (15.12.2016 21:17 отредактировано Visman)

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Otto.Zukamoto, минимизировать работу родного парсера PunBB (запуск функций все равно будет происходить) можно так:
1. хуки ps_preparse_bbcode_start, ps_parse_message_start, ps_parse_signature_start (priority="1")

return $text;

В таком варианте, если другие расширения не вмешиваются, парсинга бб-кодов не будет, смайлов не будет, цензуры не будет.
P.S. А можно зайти в админку и убрать все нужные галки в настройках форума.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться