rxu писал(а): 29.09.2017 6:32Для меня эта задача звучит примерно так
Ваше мнение не выражает действительности.
rxu писал(а): 29.09.2017 6:32Необходимо изобрести колесо. Но старое круглое, и всё равно крутится. Как к нему подцепиться, чтобы новое круглое крутилось, а старое нет
Ваши фантазии оставьте при себе, пожалуйста.
Если нечего написать по теме, то лучше промолчите.
Ездили бы на деревянных колесах, как и раньше.
rxu писал(а): 29.09.2017 6:32phpBB 3.2 использует расширенную систему
Расширенная != расширяемая.
Это никуда не годная система.
[b]жирный[code]code[/code]текст[/b]
Получаем:
жирныйтекст[/b]
Ужас же. Оно не могёт даже вложенные теги,
не говоря уже о чем-то более заковыристом.
Почему-то моё "колесо" это могёт правильно распарсить,
а это "расширенное" - нет.
А теперь вопрос, как её расширить?
Например, мы можем в конфигуратор запхнуть callback, который принимает ...\Parser\Tag,
но вопрос в том, как тоже самое сделать для рендеринга?
Да и для парсера там текст внутри кода не поменяешь.
Работали с WordPress? Почему-то там это можно провернуть без
всяких "расширенных" библиотек, которые хороши
только когда делаешь что-то с нуля,
но ни фига не проектировались для расширения.
Приведу пример для WordPress,
Код: Выделить всё
add_filter( 'the_content', 'bbcode_filter' , 1 );
function bbcode_filter($content){
//Делаю с содержимым поста (статьи) что угодно, например, обрабатываем теги так, как нам нужно
}
Для phpBB же мы перед рендером получаем кашу из xml,
а после рендеринга получаем html.
А где же тот промежуточный этап, с текстом,
который вводил пользователь, когда отправлял сообщение?
Оно в базу уже попадает со "вставками".
Можно отключить BBCode, тогда оно попадет без "навороченных" BBCode'ов в базу,
но старые сообщения всё равно будут парсится "по старому стилю".
И проблема здесь как раз та, что указана выше -
парсер на входе ждет xml, вместо голого текста, а на выходе дает html.
В общем, стремноватая для расширения система получается.
Конечно же я её не видел. Куда уж мне.
rxu писал(а): 29.09.2017 6:32После ознакомления - велкам.
Не видно.
rxu писал(а): 29.09.2017 6:32Ну и задачу я бы посоветовал либо уточнить, либо вообще поменять.
Поменять?
- Мне нужно построить дом.
- Зачем он Вам? Купите автомобиль!

Уточняю.
Есть текст с BBCode'ами, например:
[cpp mark='red:1,3,16-19;yellow:4,21']
Много кода C++. Строки 1,3,16, 17, 18, 19 выделены красным, а 4 и 21 - желтым.
[/cpp]
Или, например,
[code lang=cpp mark='red:1,3,16-19;yellow:4,21' driver=geshi]
Много кода C++. Строки 1,3,16, 17, 18, 19 выделены красным, а 4 и 21 - желтым.
Для подсветки используется geshi.
[/code]
[bash]Много кода Bash. С дефолтной подсветкой без изменений.[/bash]
[quote]Цитату необходимо предварительно обработать.
[quote]И вложенную цитату немного приукрасить.
[cpp mark='red:11']И еще код внутри цитаты покрасить[/cpp]
[/quote]
[/quote]
[textstyle=attention]Много текста с заданным стилем. Внутри могут быть вложенные коды, которые могут подчиняться собственным законам.[/textstyle]
И вот я спрашиваю, справится ли система phpBB с подобным?
В WodrPress, на который натянут основной сайт, такое делается без проблем.
Вопрос в том, как такое провернуть в расширениях phpBB
не прибегая к правке кода самого форума.
Если никак, то значит напишу то самое колесо,
до которого еще не дошла цивилизация phpBB.
rxu писал(а): 29.09.2017 6:32Лучше начать с конечного результата - что должно быть на выходе.
Конечный результат - система BBCode, способная обрабатывать сложные структуры.
На данный момент можно код этого колеса взять из основного сайта,
с небольшими изменениями в плане ограничения доступа к некоторым возможностей.
Но чтобы оно завелось, необходимо, чтобы рендеринг полностью
подчинялся нашим правилам и работал с голым текстом, а не с xml.
Пришла идея подцепиться к "core.text_formatter_s9e_renderer_setup", и поменять рендерер на свой.
Возможно ли? Пока нет возможности залезть в код phpBB, чтобы посмотреть как оно там работает.