diff --git a/iparser.h b/iparser.h index 2d815b8..3835e86 100644 --- a/iparser.h +++ b/iparser.h @@ -8,6 +8,7 @@ class IParser { public: + virtual std::string extractCommand(std::string cmdname, std::string content) const = 0; virtual std::vector extractHeadlines(std::string content) const = 0; virtual std::string parse(const PageDao &pagedao, UrlProvider &provider, std::string content) const = 0; virtual std::vector extractCategories(std::string content) const = 0; diff --git a/parser.cpp b/parser.cpp index 9fe39b8..60daf5c 100644 --- a/parser.cpp +++ b/parser.cpp @@ -62,6 +62,19 @@ std::vector Parser::extractCategories(std::string content) const } return result; } + +std::string Parser::extractCommand(std::string cmdname, std::string content) const +{ + std::string regstr = "(\\s|\\S)*\\[cmd\\:" + cmdname + "\\](.*?)\\[/cmd\\:" + cmdname + "\\](\\s|\\S)*"; + std::regex reg{regstr}; + std::smatch match; + if(std::regex_match(content, match, reg)) + { + + return match.str(2); + } + return ""; +} std::string Parser::processLink(const PageDao &pageDao, UrlProvider &urlProvider, std::smatch &match) const { std::string linktag = match.str(1); @@ -96,6 +109,7 @@ std::string Parser::processLink(const PageDao &pageDao, UrlProvider &urlProvider return htmllink.render(); } + std::string Parser::parse(const PageDao &pagedao, UrlProvider &provider, std::string content) const { std::string result; diff --git a/parser.h b/parser.h index 6131325..a4c91e5 100644 --- a/parser.h +++ b/parser.h @@ -9,6 +9,7 @@ class Parser : public IParser std::string processLink(const PageDao &pageDao, UrlProvider &urlProvider, std::smatch &match) const; public: + std::string extractCommand(std::string cmdname, std::string content) const; std::vector extractHeadlines(std::string content) const override; std::vector extractCategories(std::string content) const override; std::string parse(const PageDao &pagedao, UrlProvider &provider, std::string content) const override;