From f679d65052bb766f569faa792332aaaddc6d04a6 Mon Sep 17 00:00:00 2001 From: Chaitanya Kukde Date: Tue, 3 Sep 2019 19:14:30 +0530 Subject: [PATCH 1/3] Fix Issue#21: Check if text is underscore before formatting --- include/maddy/emphasizedparser.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/maddy/emphasizedparser.h b/include/maddy/emphasizedparser.h index 6838d83..45bad51 100644 --- a/include/maddy/emphasizedparser.h +++ b/include/maddy/emphasizedparser.h @@ -41,8 +41,8 @@ class EmphasizedParser : public LineParser void Parse(std::string& line) override { - static std::regex re("(?!.*`.*|.*.*)_(?!.*`.*|.*<\\/code>.*)([^_]*)_(?!.*`.*|.*<\\/code>.*)"); - static std::string replacement = "$1"; + static std::regex re("^(?!\[(.*?)\\]\((.*?)\\))(?!.*`.*|.*.*)_(?!.*`.*|.*<\\/code>.*)([^_]*)_(?!.*`.*|.*<\\/code>.*)"); + static std::string replacement = "$3"; line = std::regex_replace(line, re, replacement); } From 1c95158d87d525e4cb175208485391ddde5882e7 Mon Sep 17 00:00:00 2001 From: Chaitanya Kukde Date: Thu, 5 Sep 2019 14:28:25 +0530 Subject: [PATCH 2/3] Fix test compiler warnings --- include/maddy/emphasizedparser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/maddy/emphasizedparser.h b/include/maddy/emphasizedparser.h index 45bad51..55beccf 100644 --- a/include/maddy/emphasizedparser.h +++ b/include/maddy/emphasizedparser.h @@ -41,7 +41,7 @@ class EmphasizedParser : public LineParser void Parse(std::string& line) override { - static std::regex re("^(?!\[(.*?)\\]\((.*?)\\))(?!.*`.*|.*.*)_(?!.*`.*|.*<\\/code>.*)([^_]*)_(?!.*`.*|.*<\\/code>.*)"); + static std::regex re("^(?!\\[(.*?)\\]\\((.*?)\\))(?!.*`.*|.*.*)_(?!.*`.*|.*<\\/code>.*)([^_]*)_(?!.*`.*|.*<\\/code>.*)"); static std::string replacement = "$3"; line = std::regex_replace(line, re, replacement); From 02157dd135e27943b416eeaa8f318793ded761c8 Mon Sep 17 00:00:00 2001 From: Chaitanya Kukde Date: Fri, 6 Sep 2019 15:01:53 +0530 Subject: [PATCH 3/3] New regex pattern that works in regexr but throws regex_error at runtime --- include/maddy/emphasizedparser.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/maddy/emphasizedparser.h b/include/maddy/emphasizedparser.h index 55beccf..2073681 100644 --- a/include/maddy/emphasizedparser.h +++ b/include/maddy/emphasizedparser.h @@ -41,8 +41,8 @@ class EmphasizedParser : public LineParser void Parse(std::string& line) override { - static std::regex re("^(?!\\[(.*?)\\]\\((.*?)\\))(?!.*`.*|.*.*)_(?!.*`.*|.*<\\/code>.*)([^_]*)_(?!.*`.*|.*<\\/code>.*)"); - static std::string replacement = "$3"; + static std::regex re("(?!.*`.*|.*.*)_(?!.*`.*|.*<\\/code>.*)([^_]*)_(?!.*`.*|.*<\\/code>.*)+(?![^\\(]*\\))+(?![^\\[]*\\])"); + static std::string replacement = "$1"; line = std::regex_replace(line, re, replacement); }