Merge branch 'master' into add_italic

This commit is contained in:
Petra Baranski 2018-10-25 16:42:33 +02:00 committed by GitHub
commit 78652f64d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 83 additions and 20 deletions

View File

@ -5,3 +5,4 @@ licensing terms detailed in LICENSE.
a license to everyone to use it as detailed in LICENSE.) a license to everyone to use it as detailed in LICENSE.)
M. Petra Baranski (info@progsource.de) M. Petra Baranski (info@progsource.de)
Patrick José Pereira (patrickelectric@gmail.com)

View File

@ -221,10 +221,12 @@ results in
``` ```
**bold text** **bold text**
__bold text__
``` ```
results in results in
```html ```html
<strong>bold text</strong> <strong>bold text</strong>
<strong>bold text</strong>
``` ```
## italic ## italic

View File

@ -30,9 +30,9 @@ public:
/** /**
* Parse * Parse
* *
* From Markdown: `text **text**` * From Markdown: `text **text** __text__`
* *
* To HTML: `text <strong>text</strong>` * To HTML: `text <strong>text</strong> <strong>text</strong>`
* *
* @method * @method
* @param {std::string&} line The line to interpret * @param {std::string&} line The line to interpret
@ -41,10 +41,16 @@ public:
void void
Parse(std::string& line) override Parse(std::string& line) override
{ {
static std::regex re("(?!.*`.*|.*<code>.*)\\*\\*(?!.*`.*|.*<\\/code>.*)([^\\*\\*]*)\\*\\*(?!.*`.*|.*<\\/code>.*)"); static std::vector<std::regex> res
{
std::regex{"(?!.*`.*|.*<code>.*)\\*\\*(?!.*`.*|.*<\\/code>.*)([^\\*\\*]*)\\*\\*(?!.*`.*|.*<\\/code>.*)"},
std::regex{"(?!.*`.*|.*<code>.*)\\_\\_(?!.*`.*|.*<\\/code>.*)([^\\_\\_]*)\\_\\_(?!.*`.*|.*<\\/code>.*)"}
};
static std::string replacement = "<strong>$1</strong>"; static std::string replacement = "<strong>$1</strong>";
for (const auto& re : res)
line = std::regex_replace(line, re, replacement); {
line = std::regex_replace(line, re, replacement);
}
} }
}; // class StrongParser }; // class StrongParser

View File

@ -12,33 +12,87 @@
TEST(MADDY_STRONGPARSER, ItReplacesMarkdownWithStrongHTML) TEST(MADDY_STRONGPARSER, ItReplacesMarkdownWithStrongHTML)
{ {
std::string text = "some text **bla** text testing **it** out"; struct testIt
std::string expected = "some text <strong>bla</strong> text testing <strong>it</strong> out"; {
std::string text;
std::string expected;
};
std::vector<testIt> tests
{
{
"some text **bla** text testing **it** out",
"some text <strong>bla</strong> text testing <strong>it</strong> out"
},
{
"some text __bla__ text testing __it__ out",
"some text <strong>bla</strong> text testing <strong>it</strong> out"
},
};
auto strongParser = std::make_shared<maddy::StrongParser>(); auto strongParser = std::make_shared<maddy::StrongParser>();
strongParser->Parse(text); for (auto& test : tests)
{
ASSERT_EQ(expected, text); strongParser->Parse(test.text);
ASSERT_EQ(test.expected, test.text);
}
} }
TEST(MADDY_STRONGPARSER, ItReplacesEmphasizedMarkdownNotWithStrongHTML) TEST(MADDY_STRONGPARSER, ItReplacesEmphasizedMarkdownNotWithStrongHTML)
{ {
std::string text = "some text *bla* text testing **it** out"; struct testIt
std::string expected = "some text *bla* text testing <strong>it</strong> out"; {
std::string text;
std::string expected;
};
std::vector<testIt> tests
{
{
"some text *bla* text testing **it** out",
"some text *bla* text testing <strong>it</strong> out"
},
{
"some text _bla_ text testing __it__ out",
"some text _bla_ text testing <strong>it</strong> out"
},
};
auto strongParser = std::make_shared<maddy::StrongParser>(); auto strongParser = std::make_shared<maddy::StrongParser>();
strongParser->Parse(text); for (auto& test : tests)
{
ASSERT_EQ(expected, text); strongParser->Parse(test.text);
ASSERT_EQ(test.expected, test.text);
}
} }
TEST(MADDY_STRONGPARSER, ItDoesNotParseInsideInlineCode) TEST(MADDY_STRONGPARSER, ItDoesNotParseInsideInlineCode)
{ {
std::string text = "some text **bla** `/**text**/` testing `**it**` out"; struct testIt
std::string expected = "some text **bla** `/**text**/` testing `**it**` out"; {
std::string text;
std::string expected;
};
std::vector<testIt> tests
{
{
"some text **bla** `/**text**/` testing `**it**` out",
"some text **bla** `/**text**/` testing `**it**` out",
},
{
"some text _bla_ text testing __it__ out",
"some text _bla_ text testing <strong>it</strong> out"
},
};
auto strongParser = std::make_shared<maddy::StrongParser>(); auto strongParser = std::make_shared<maddy::StrongParser>();
strongParser->Parse(text); for (auto& test : tests)
{
ASSERT_EQ(expected, text); strongParser->Parse(test.text);
ASSERT_EQ(test.expected, test.text);
}
} }