parser: fix multiline and nested parsing

This commit is contained in:
Albert S. 2018-11-04 10:19:01 +01:00
parent 076106ecb9
commit c93893a56e

View File

@ -101,12 +101,13 @@ std::string Parser::processLink(const PageDao &pageDao, UrlProvider &urlProvider
std::string Parser::parse(const PageDao &pagedao, UrlProvider &provider, std::string content) const
{
std::string result;
std::regex tagfinder(R"(\[(.*?)\](.*?)\[/\1\])");
std::regex tagfinder(R"(\[(.*?)\]((\s|\S)*?)\[/\1\])");
result = utils::regex_callback_replacer(tagfinder, content, [&](std::smatch &match)
{
std::string tag = match.str(1);
std::string content = match.str(2);
std::string justreplace[] = { "b", "i", "u"};
std::string justreplace[] = { "b", "i", "u", "ul", "li", "ol"};
content = parse(pagedao, provider, content);
if(std::find(std::begin(justreplace), std::end(justreplace), tag) != std::end(justreplace))
{
return "<" + tag + ">" + content + "</" + tag + ">";