Mercurial > thymian
annotate 3rdparty/maddy/italicparser.h @ 0:a4671277546c tip
created the repository for the thymian project
| author | ferencd |
|---|---|
| date | Tue, 17 Aug 2021 11:19:54 +0200 |
| parents | |
| children |
| rev | line source |
|---|---|
| ferencd@0 | 1 /* |
| ferencd@0 | 2 * This project is licensed under the MIT license. For more information see the |
| ferencd@0 | 3 * LICENSE file. |
| ferencd@0 | 4 */ |
| ferencd@0 | 5 #pragma once |
| ferencd@0 | 6 |
| ferencd@0 | 7 // ----------------------------------------------------------------------------- |
| ferencd@0 | 8 |
| ferencd@0 | 9 #include <string> |
| ferencd@0 | 10 #include <regex> |
| ferencd@0 | 11 |
| ferencd@0 | 12 #include "maddy/lineparser.h" |
| ferencd@0 | 13 |
| ferencd@0 | 14 // ----------------------------------------------------------------------------- |
| ferencd@0 | 15 |
| ferencd@0 | 16 namespace maddy { |
| ferencd@0 | 17 |
| ferencd@0 | 18 // ----------------------------------------------------------------------------- |
| ferencd@0 | 19 |
| ferencd@0 | 20 /** |
| ferencd@0 | 21 * ItalicParser |
| ferencd@0 | 22 * |
| ferencd@0 | 23 * @class |
| ferencd@0 | 24 */ |
| ferencd@0 | 25 class ItalicParser : public LineParser |
| ferencd@0 | 26 { |
| ferencd@0 | 27 public: |
| ferencd@0 | 28 /** |
| ferencd@0 | 29 * Parse |
| ferencd@0 | 30 * |
| ferencd@0 | 31 * From Markdown: `text *text*` |
| ferencd@0 | 32 * |
| ferencd@0 | 33 * To HTML: `text <i>text</i>` |
| ferencd@0 | 34 * |
| ferencd@0 | 35 * @method |
| ferencd@0 | 36 * @param {std::string&} line The line to interpret |
| ferencd@0 | 37 * @return {void} |
| ferencd@0 | 38 */ |
| ferencd@0 | 39 void |
| ferencd@0 | 40 Parse(std::string& line) override |
| ferencd@0 | 41 { |
| ferencd@0 | 42 std::regex re("(?!.*`.*|.*<code>.*)\\*(?!.*`.*|.*<\\/code>.*)([^\\*]*)\\*(?!.*`.*|.*<\\/code>.*)"); |
| ferencd@0 | 43 static std::string replacement = "<i>$1</i>"; |
| ferencd@0 | 44 line = std::regex_replace(line, re, replacement); |
| ferencd@0 | 45 } |
| ferencd@0 | 46 }; // class ItalicParser |
| ferencd@0 | 47 |
| ferencd@0 | 48 // ----------------------------------------------------------------------------- |
| ferencd@0 | 49 |
| ferencd@0 | 50 } // namespace maddy |
