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