Я написал файл грамматики верхушки дерева, который в основном работает. Для таких тегов, как [b]
, я хочу передать их в функцию, которая имеет хэш настроенных BBCodes для этого форума. Если бы жирный шрифт был разрешен, он вернул бы HTML, в противном случае он проигнорировал бы код BB.
rule tag
tag:('[' [a-zA-Z]+ ']')
inner_tag:(
!('[/' [a-zA-Z]+ ']')
(tag <ForumBB::TagNode> / .)
)+
'[/' [a-zA-Z]+ ']'
end
Это не работает с вложенными тегами. Например, [b][i]Bold and italics[/i][/b]
не будет обрабатываться правильно, потому что они соответствуют первому закрывающему тегу [/i]
.
Как я могу сделать так, чтобы, когда он находит тег, он искал закрывающий тег в отрицательном поиске?
Я бы не хотел писать все правила для каждого типа BBCode, поскольку это динамическая система, в которой администраторы форума включают/отключают определенные теги.