镜像自地址
				https://github.com/quitesimpleorg/qsmaddy.git
				已同步 2025-11-03 18:29:28 +01:00 
			
		
		
		
	fixed inline code for bold, em and s
In inline code the markdown for bold , emphasized and strike trhough is not parsed anymore. Additionally the linker might be now faster on Linux.
这个提交包含在:
		@@ -27,11 +27,26 @@ file(GLOB_RECURSE MADDY_TESTS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/maddy/*.cp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set(
 | 
					set(
 | 
				
			||||||
  CMAKE_CXX_FLAGS
 | 
					  CMAKE_CXX_FLAGS
 | 
				
			||||||
  "${CMAKE_CXX_FLAGS} -g -std=c++${MADDY_CPP_VERSION} -Wall -Wpedantic -Wextra -Wno-ignored-qualifiers -fno-rtti -fno-exceptions" #  -O2
 | 
					  "${CMAKE_CXX_FLAGS} -g -std=c++${MADDY_CPP_VERSION} -Wall -Wpedantic -Wextra -Wno-ignored-qualifiers -fno-rtti -fno-exceptions"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# ------------------------------------------------------------------------------
 | 
					# ------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (UNIX AND NOT APPLE)
 | 
				
			||||||
 | 
					  execute_process(COMMAND ${CMAKE_CXX_COMPILER}
 | 
				
			||||||
 | 
					                  -fuse-ld=gold -Wl,--version
 | 
				
			||||||
 | 
					                  ERROR_QUIET OUTPUT_VARIABLE ld_version)
 | 
				
			||||||
 | 
					  if ("${ld_version}" MATCHES "GNU gold")
 | 
				
			||||||
 | 
					    message(STATUS "Found Gold linker, use faster linker")
 | 
				
			||||||
 | 
					    set(CMAKE_EXE_LINKER_FLAGS
 | 
				
			||||||
 | 
					        "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
 | 
				
			||||||
 | 
					    set(CMAKE_SHARED_LINKER_FLAGS
 | 
				
			||||||
 | 
					        "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold ")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 | 
					set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 | 
				
			||||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/gtest/googlemock)
 | 
					add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/gtest/googlemock)
 | 
				
			||||||
add_subdirectory(libs)
 | 
					add_subdirectory(libs)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@ public:
 | 
				
			|||||||
  void
 | 
					  void
 | 
				
			||||||
  Parse(std::string& line) override
 | 
					  Parse(std::string& line) override
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    static std::regex re("\\*([^\\*]*)\\*");
 | 
					    static std::regex re("(?!`|<code>)\\*(?!`|</code>)([^\\*]*)\\*(?!`|</code>)");
 | 
				
			||||||
    static std::string replacement = "<em>$1</em>";
 | 
					    static std::string replacement = "<em>$1</em>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    line = std::regex_replace(line, re, replacement);
 | 
					    line = std::regex_replace(line, re, replacement);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ public:
 | 
				
			|||||||
  void
 | 
					  void
 | 
				
			||||||
  Parse(std::string& line) override
 | 
					  Parse(std::string& line) override
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    static std::regex re("\\~\\~([^\\~]*)\\~\\~");
 | 
					    static std::regex re("(?!`|<code>)\\~\\~(?!`|</code>)([^\\~]*)\\~\\~(?!`|</code>)");
 | 
				
			||||||
    static std::string replacement = "<s>$1</s>";
 | 
					    static std::string replacement = "<s>$1</s>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    line = std::regex_replace(line, re, replacement);
 | 
					    line = std::regex_replace(line, re, replacement);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@ public:
 | 
				
			|||||||
  void
 | 
					  void
 | 
				
			||||||
  Parse(std::string& line) override
 | 
					  Parse(std::string& line) override
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    static std::regex re("\\*\\*([^\\*\\*]*)\\*\\*");
 | 
					    static std::regex re("(?!`|<code>)\\*\\*(?!`|</code>)([^\\*\\*]*)\\*\\*(?!`|</code>)");
 | 
				
			||||||
    static std::string replacement = "<strong>$1</strong>";
 | 
					    static std::string replacement = "<strong>$1</strong>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    line = std::regex_replace(line, re, replacement);
 | 
					    line = std::regex_replace(line, re, replacement);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,3 +20,14 @@ TEST(MADDY_EMPHASIZEDPARSER, ItReplacesMarkdownWithEmphasizedHTML)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ASSERT_EQ(expected, text);
 | 
					  ASSERT_EQ(expected, text);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST(MADDY_EMPHASIZEDPARSER, ItDoesNotParseInsideInlineCode)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  std::string text = "some text `*bla*` text testing *it* out";
 | 
				
			||||||
 | 
					  std::string expected = "some text `*bla*` text testing <em>it</em> out";
 | 
				
			||||||
 | 
					  auto emphasizedParser = std::make_shared<maddy::EmphasizedParser>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  emphasizedParser->Parse(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ASSERT_EQ(expected, text);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,3 +20,14 @@ TEST(MADDY_STRIKETHROUGHPARSER, ItReplacesMarkdownWithStrikeThroughHTML)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ASSERT_EQ(expected, text);
 | 
					  ASSERT_EQ(expected, text);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST(MADDY_STRIKETHROUGHPARSER, ItDoesNotParseInsideInlineCode)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  std::string text = "some text `~~bla~~` text testing <code>~~it~~</code> out";
 | 
				
			||||||
 | 
					  std::string expected = "some text `~~bla~~` text testing <code>~~it~~</code> out";
 | 
				
			||||||
 | 
					  auto strikeThroughParser = std::make_shared<maddy::StrikeThroughParser>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  strikeThroughParser->Parse(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ASSERT_EQ(expected, text);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,3 +31,14 @@ TEST(MADDY_STRONGPARSER, ItReplacesEmphasizedMarkdownNotWithStrongHTML)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ASSERT_EQ(expected, text);
 | 
					  ASSERT_EQ(expected, text);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST(MADDY_STRONGPARSER, ItDoesNotParseInsideInlineCode)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  std::string text = "some text *bla* text testing `**it**` out";
 | 
				
			||||||
 | 
					  std::string expected = "some text *bla* text testing `**it**` out";
 | 
				
			||||||
 | 
					  auto strongParser = std::make_shared<maddy::StrongParser>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  strongParser->Parse(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ASSERT_EQ(expected, text);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		在新工单中引用
	
	屏蔽一个用户