/* * This project is licensed under the MIT license. For more information see the * LICENSE file. */ #pragma once // ----------------------------------------------------------------------------- #include #include #include "lineparser.h" // ----------------------------------------------------------------------------- namespace maddy { // ----------------------------------------------------------------------------- /** * StrongParser * * Has to be used before the `EmphasizedParser`. * * @class */ class StrongParser : public LineParser { public: /** * Parse * * From Markdown: `text **text** __text__` * * To HTML: `text text text` * * @method * @param {std::string&} line The line to interpret * @return {void} */ void Parse( std::string& line ) override { static std::vector res { std::regex { "(?!.*`.*|.*.*)\\*\\*(?!.*`.*|.*<\\/code>.*)([^\\*\\*]*)\\*\\*(?!.*`.*|.*<\\/code>.*)" }, std::regex { "(?!.*`.*|.*.*)__(?!.*`.*|.*<\\/code>.*)([^__]*)__(?!.*`.*|.*<\\/code>.*)" } }; static std::string replacement = "$1"; for( const auto& re : res ) { line = std::regex_replace( line, re, replacement ); } } }; // class StrongParser // ----------------------------------------------------------------------------- } // namespace maddy