/* * This project is licensed under the MIT license. For more information see the * LICENSE file. */ #pragma once // ----------------------------------------------------------------------------- #include #include #include "maddy/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