mirror of
https://github.com/progsource/maddy.git
synced 2026-03-25 07:50:39 +01:00
Add regex for title text version of links
* Add regex for title text version of links Original parser matched: [name](http:://link) Add match for: [name](http:://link "title text") * Add tests and improve regex's * Several new tests in test_maddy_linkparser.cpp (Some with paths for future improvement, and one to ensure an overzealous future update doesn't disallow actually-used special characters like o-umlaut). * URLs now ignore leading/trailing spaces. * URLs now don't match on internal spaces or quotes. * Small grammar fix in CONTRIBUTING.md * Updated changelog.
This commit is contained in:
@@ -40,10 +40,17 @@ public:
|
||||
*/
|
||||
void Parse(std::string& line) override
|
||||
{
|
||||
static std::regex re(R"(\[([^\]]*)\]\(([^)]*)\))");
|
||||
static std::string replacement = "<a href=\"$2\">$1</a>";
|
||||
|
||||
// Match [name](http:://link "title text")
|
||||
// NOTE: the 'no quote' bit at the beginning (^") is a hack for now:
|
||||
// there should eventually be something that replaces it with '%22'.
|
||||
static std::regex re(R"(\[([^\]]*)\]\( *([^)^ ^"]*) *\"([^\"]*)\" *\))");
|
||||
static std::string replacement = "<a href=\"$2\" title=\"$3\">$1</a>";
|
||||
line = std::regex_replace(line, re, replacement);
|
||||
|
||||
// Match [name](http:://link)
|
||||
static std::regex re2(R"(\[([^\]]*)\]\( *([^)^ ^"]*) *\))");
|
||||
static std::string replacement2 = "<a href=\"$2\">$1</a>";
|
||||
line = std::regex_replace(line, re2, replacement2);
|
||||
}
|
||||
}; // class LinkParser
|
||||
|
||||
|
||||
Reference in New Issue
Block a user