diff --git a/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc b/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc
index 15ea78cf2..abf789a9b 100644
--- a/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc
+++ b/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc
@@ -15,34 +15,11 @@
using namespace mdp;
MarkdownNode::MarkdownNode(MarkdownNodeType type_, MarkdownNode* parent_, const ByteBuffer& text_, const Data& data_)
- : type(type_), text(text_), data(data_), m_parent(parent_)
+ : type(type_), text(text_), data(data_), sourceMap(), m_parent(parent_), m_children(nullptr)
{
m_children.reset(::new MarkdownNodes);
}
-MarkdownNode::MarkdownNode(const MarkdownNode& rhs)
-{
- this->type = rhs.type;
- this->text = rhs.text;
- this->data = rhs.data;
- this->sourceMap = rhs.sourceMap;
- this->m_children.reset(::new MarkdownNodes(*rhs.m_children.get()));
- this->m_parent = rhs.m_parent;
-}
-
-MarkdownNode& MarkdownNode::operator=(const MarkdownNode& rhs)
-{
- this->type = rhs.type;
- this->text = rhs.text;
- this->data = rhs.data;
- this->sourceMap = rhs.sourceMap;
- this->m_children.reset(::new MarkdownNodes(*rhs.m_children.get()));
- this->m_parent = rhs.m_parent;
- return *this;
-}
-
-MarkdownNode::~MarkdownNode() {}
-
MarkdownNode& MarkdownNode::parent()
{
if (!hasParent())
diff --git a/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h b/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h
index bb7f47f5f..a988c3be9 100644
--- a/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h
+++ b/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h
@@ -82,13 +82,15 @@ namespace mdp
const Data& data_ = Data());
/** Copy constructor */
- MarkdownNode(const MarkdownNode& rhs);
+ MarkdownNode(const MarkdownNode& rhs) = delete;
+ MarkdownNode(MarkdownNode&& rhs) = default;
/** Assignment operator */
- MarkdownNode& operator=(const MarkdownNode& rhs);
+ MarkdownNode& operator=(const MarkdownNode& rhs) = delete;
+ MarkdownNode& operator=(MarkdownNode&& rhs) = default;
/** Destructor */
- ~MarkdownNode();
+ ~MarkdownNode() = default;
#ifdef DEBUG
/** Prints the node to the stderr */
diff --git a/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc b/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc
index 4dfeabbd9..25e899e05 100644
--- a/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc
+++ b/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc
@@ -33,9 +33,9 @@ static ByteBuffer ByteBufferFromSundown(const struct buf* text)
MarkdownParser::MarkdownParser() : m_workingNode(NULL), m_listBlockContext(false), m_source(NULL), m_sourceLength(0) {}
-void MarkdownParser::parse(const ByteBuffer& source, MarkdownNode& ast)
+MarkdownNode MarkdownParser::parse(const ByteBuffer& source)
{
- ast = MarkdownNode();
+ MarkdownNode ast{};
m_workingNode = *
m_workingNode->type = RootMarkdownNodeType;
m_workingNode->sourceMap.push_back(BytesRange(0, source.length()));
@@ -57,6 +57,8 @@ void MarkdownParser::parse(const ByteBuffer& source, MarkdownNode& ast)
m_source = NULL;
m_sourceLength = 0;
m_listBlockContext = false;
+
+ return ast;
}
MarkdownParser::RenderCallbacks MarkdownParser::renderCallbacks()
@@ -105,8 +107,7 @@ void MarkdownParser::renderHeader(const ByteBuffer& text, int level)
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(HeaderMarkdownNodeType, m_workingNode, text, level);
- m_workingNode->children().push_back(node);
+ m_workingNode->children().emplace_back(HeaderMarkdownNodeType, m_workingNode, text, level);
}
void MarkdownParser::beginList(int flags, void* opaque)
@@ -152,8 +153,7 @@ void MarkdownParser::beginListItem(int flags)
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(ListItemMarkdownNodeType, m_workingNode, ByteBuffer(), flags);
- m_workingNode->children().push_back(node);
+ m_workingNode->children().emplace_back(ListItemMarkdownNodeType, m_workingNode, ByteBuffer(), flags);
// Push context
m_workingNode = &m_workingNode->children().back();
@@ -180,8 +180,7 @@ void MarkdownParser::renderListItem(const ByteBuffer& text, int flags)
// Instead of storing the text on the list item
// create the artificial paragraph node to store the text.
if (m_workingNode->children().empty() || m_workingNode->children().front().type != ParagraphMarkdownNodeType) {
- MarkdownNode textNode(ParagraphMarkdownNodeType, m_workingNode, text);
- m_workingNode->children().push_front(textNode);
+ m_workingNode->children().emplace_front(ParagraphMarkdownNodeType, m_workingNode, text);
}
m_workingNode->data = flags;
@@ -204,8 +203,7 @@ void MarkdownParser::renderBlockCode(const ByteBuffer& text, const ByteBuffer& l
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(CodeMarkdownNodeType, m_workingNode, text);
- m_workingNode->children().push_back(node);
+ m_workingNode->children().emplace_back(CodeMarkdownNodeType, m_workingNode, text);
}
void MarkdownParser::renderParagraph(struct buf* ob, const struct buf* text, void* opaque)
@@ -222,8 +220,7 @@ void MarkdownParser::renderParagraph(const ByteBuffer& text)
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(ParagraphMarkdownNodeType, m_workingNode, text);
- m_workingNode->children().push_back(node);
+ m_workingNode->children().emplace_back(ParagraphMarkdownNodeType, m_workingNode, text);
}
void MarkdownParser::renderHorizontalRule(struct buf* ob, void* opaque)
@@ -240,8 +237,7 @@ void MarkdownParser::renderHorizontalRule()
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(HRuleMarkdownNodeType, m_workingNode, ByteBuffer(), MarkdownNode::Data());
- m_workingNode->children().push_back(node);
+ m_workingNode->children().emplace_back(HRuleMarkdownNodeType, m_workingNode, ByteBuffer(), MarkdownNode::Data());
}
void MarkdownParser::renderHTML(struct buf* ob, const struct buf* text, void* opaque)
@@ -258,8 +254,8 @@ void MarkdownParser::renderHTML(const ByteBuffer& text)
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(HTMLMarkdownNodeType, m_workingNode, text);
- m_workingNode->children().push_back(node);
+ MarkdownNode node();
+ m_workingNode->children().emplace_back(HTMLMarkdownNodeType, m_workingNode, text);
}
void MarkdownParser::beginQuote(void* opaque)
@@ -276,8 +272,7 @@ void MarkdownParser::beginQuote()
if (!m_workingNode)
throw NO_WORKING_NODE_ERR;
- MarkdownNode node(QuoteMarkdownNodeType, m_workingNode);
- m_workingNode->children().push_back(node);
+ m_workingNode->children().emplace_back(QuoteMarkdownNodeType, m_workingNode);
// Push context
m_workingNode = &m_workingNode->children().back();
diff --git a/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h b/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h
index 829061061..c4cdcc80a 100644
--- a/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h
+++ b/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h
@@ -39,9 +39,9 @@ namespace mdp
* \brief Parse source buffer
*
* \param source Markdown source data to be parsed
- * \param ast Parsed AST (root node)
+ * \return Parsed AST (root node)
*/
- void parse(const ByteBuffer& source, MarkdownNode& ast);
+ MarkdownNode parse(const ByteBuffer& source);
private:
MarkdownNode* m_workingNode;
diff --git a/ext/snowcrash/ext/markdown-parser/test/test-ByteBuffer.cc b/ext/snowcrash/ext/markdown-parser/test/test-ByteBuffer.cc
index be565f621..0c2d81d00 100644
--- a/ext/snowcrash/ext/markdown-parser/test/test-ByteBuffer.cc
+++ b/ext/snowcrash/ext/markdown-parser/test/test-ByteBuffer.cc
@@ -14,14 +14,13 @@ using namespace mdp;
TEST_CASE("Multi-byte characters Czech", "[bytebuffer][sourcemap]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "\x50\xC5\x99\xC3\xAD\xC5\xA1\x65\x72\x6E\xC4\x9B\x20\xC5\xBE\x6C\x75\xC5\xA5\x6F\x75\xC4\x8D\x6B\xC3\xBD\x20"
"\x6B\xC5\xAF\xC5\x88\x20\xC3\xBA\x70\xC4\x9B\x6C\x20\xC4\x8F\xC3\xA1\x62\x65\x6C\x73\x6B\xC3\xA9\x20\xC3\xB3"
"\x64\x79\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -43,12 +42,11 @@ TEST_CASE("Multi-byte characters Czech", "[bytebuffer][sourcemap]")
TEST_CASE("Multi-byte characters in blockquote", "[bytebuffer][sourcemap]")
{
MarkdownParser parser;
- MarkdownNode ast;
// "> Ni Hao"
ByteBuffer src = "> \xE4\xBD\xA0\xE5\xA5\xBD\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -122,7 +120,6 @@ TEST_CASE("Character index")
TEST_CASE("Byte buffer and Index should provide equal information", "[bytebuffer][sourcemap]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "\x50\xC5\x99\xC3\xAD\xC5\xA1\x65\x72\x6E\xC4\x9B\x20\xC5\xBE\x6C\x75\xC5\xA5\x6F\x75\xC4\x8D\x6B\xC3\xBD\x20"
@@ -132,7 +129,7 @@ TEST_CASE("Byte buffer and Index should provide equal information", "[bytebuffer
ByteBufferCharacterIndex index;
mdp::BuildCharacterIndex(index, src);
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
CharactersRangeSet charMap = BytesRangeSetToCharactersRangeSet(ast.sourceMap, src);
CharactersRangeSet indexMap = BytesRangeSetToCharactersRangeSet(ast.sourceMap, index);
diff --git a/ext/snowcrash/ext/markdown-parser/test/test-MarkdownParser.cc b/ext/snowcrash/ext/markdown-parser/test/test-MarkdownParser.cc
index 52be5e4c8..0788aca0c 100644
--- a/ext/snowcrash/ext/markdown-parser/test/test-MarkdownParser.cc
+++ b/ext/snowcrash/ext/markdown-parser/test/test-MarkdownParser.cc
@@ -14,13 +14,12 @@ using namespace mdp;
TEST_CASE("Parse one paragaraph", "[parser][paragraph]")
{
MarkdownParser parser;
- MarkdownNode ast;
// NOTE: +1 Error
// Used version of sundown automatically adds a newline if one is missing.
// If the input buffer does not ends with new line it might be "prolonged".
- parser.parse("Hello World!\n", ast);
+ MarkdownNode ast = parser.parse("Hello World!\n");
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -41,7 +40,6 @@ TEST_CASE("Parse one paragaraph", "[parser][paragraph]")
TEST_CASE("Parse when starting with empty line", "[parser][empty_line]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "\n"
@@ -49,7 +47,7 @@ TEST_CASE("Parse when starting with empty line", "[parser][empty_line]")
"\n"
"Ipsum\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -59,36 +57,39 @@ TEST_CASE("Parse when starting with empty line", "[parser][empty_line]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 14);
- MarkdownNode& node = ast.children()[0];
- REQUIRE(node.type == ParagraphMarkdownNodeType);
- REQUIRE(node.text == "Lorem");
- REQUIRE(node.data == 0);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 1);
- REQUIRE(node.sourceMap[0].length == 7);
-
- node = ast.children()[1];
- REQUIRE(node.type == ParagraphMarkdownNodeType);
- REQUIRE(node.text == "Ipsum");
- REQUIRE(node.data == 0);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 8);
- REQUIRE(node.sourceMap[0].length == 6);
+ {
+ MarkdownNode& node = ast.children()[0];
+ REQUIRE(node.type == ParagraphMarkdownNodeType);
+ REQUIRE(node.text == "Lorem");
+ REQUIRE(node.data == 0);
+ REQUIRE(node.children().empty());
+ REQUIRE(node.sourceMap.size() == 1);
+ REQUIRE(node.sourceMap[0].location == 1);
+ REQUIRE(node.sourceMap[0].length == 7);
+ }
+
+ {
+ MarkdownNode& node = ast.children()[1];
+ REQUIRE(node.type == ParagraphMarkdownNodeType);
+ REQUIRE(node.text == "Ipsum");
+ REQUIRE(node.data == 0);
+ REQUIRE(node.children().empty());
+ REQUIRE(node.sourceMap.size() == 1);
+ REQUIRE(node.sourceMap[0].location == 8);
+ REQUIRE(node.sourceMap[0].length == 6);
+ }
}
TEST_CASE("Parse multiple paragaraphs", "[parser][paragraph]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "Lorem\n"
"\n"
"Ipsum\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -98,33 +99,36 @@ TEST_CASE("Parse multiple paragaraphs", "[parser][paragraph]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 13);
- MarkdownNode& node = ast.children()[0];
- REQUIRE(node.type == ParagraphMarkdownNodeType);
- REQUIRE(node.text == "Lorem");
- REQUIRE(node.data == 0);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 0);
- REQUIRE(node.sourceMap[0].length == 7);
-
- node = ast.children()[1];
- REQUIRE(node.type == ParagraphMarkdownNodeType);
- REQUIRE(node.text == "Ipsum");
- REQUIRE(node.data == 0);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 7);
- REQUIRE(node.sourceMap[0].length == 6);
+ {
+ MarkdownNode& node = ast.children()[0];
+ REQUIRE(node.type == ParagraphMarkdownNodeType);
+ REQUIRE(node.text == "Lorem");
+ REQUIRE(node.data == 0);
+ REQUIRE(node.children().empty());
+ REQUIRE(node.sourceMap.size() == 1);
+ REQUIRE(node.sourceMap[0].location == 0);
+ REQUIRE(node.sourceMap[0].length == 7);
+ }
+
+ {
+ MarkdownNode& node = ast.children()[1];
+ REQUIRE(node.type == ParagraphMarkdownNodeType);
+ REQUIRE(node.text == "Ipsum");
+ REQUIRE(node.data == 0);
+ REQUIRE(node.children().empty());
+ REQUIRE(node.sourceMap.size() == 1);
+ REQUIRE(node.sourceMap[0].location == 7);
+ REQUIRE(node.sourceMap[0].length == 6);
+ }
}
TEST_CASE("Parse header", "[parser][header]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = "# Header\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -147,13 +151,12 @@ TEST_CASE("Parse header", "[parser][header]")
TEST_CASE("Parse multiple headers", "[parser][header]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "# Header 1\n"
"## Header 2\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -163,33 +166,36 @@ TEST_CASE("Parse multiple headers", "[parser][header]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 23);
- MarkdownNode node = ast.children()[0];
- REQUIRE(node.type == HeaderMarkdownNodeType);
- REQUIRE(node.text == "Header 1");
- REQUIRE(node.data == 1);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 0);
- REQUIRE(node.sourceMap[0].length == 11);
-
- node = ast.children()[1];
- REQUIRE(node.type == HeaderMarkdownNodeType);
- REQUIRE(node.text == "Header 2");
- REQUIRE(node.data == 2);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 11);
- REQUIRE(node.sourceMap[0].length == 12);
+ {
+ MarkdownNode& node = ast.children()[0];
+ REQUIRE(node.type == HeaderMarkdownNodeType);
+ REQUIRE(node.text == "Header 1");
+ REQUIRE(node.data == 1);
+ REQUIRE(node.children().empty());
+ REQUIRE(node.sourceMap.size() == 1);
+ REQUIRE(node.sourceMap[0].location == 0);
+ REQUIRE(node.sourceMap[0].length == 11);
+ }
+
+ {
+ MarkdownNode& node = ast.children()[1];
+ REQUIRE(node.type == HeaderMarkdownNodeType);
+ REQUIRE(node.text == "Header 2");
+ REQUIRE(node.data == 2);
+ REQUIRE(node.children().empty());
+ REQUIRE(node.sourceMap.size() == 1);
+ REQUIRE(node.sourceMap[0].location == 11);
+ REQUIRE(node.sourceMap[0].length == 12);
+ }
}
TEST_CASE("Parse horizontal rule", "[parser][hrule]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = "---\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -199,7 +205,7 @@ TEST_CASE("Parse horizontal rule", "[parser][hrule]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 4);
- MarkdownNode node = ast.children().front();
+ MarkdownNode& node = ast.children().front();
REQUIRE(node.type == HRuleMarkdownNodeType);
REQUIRE(node.text.empty());
REQUIRE(node.data == 0);
@@ -212,11 +218,10 @@ TEST_CASE("Parse horizontal rule", "[parser][hrule]")
TEST_CASE("Parse code block", "[parser][code]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = " 42
\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -226,7 +231,7 @@ TEST_CASE("Parse code block", "[parser][code]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 20);
- MarkdownNode node = ast.children().front();
+ MarkdownNode& node = ast.children().front();
REQUIRE(node.type == CodeMarkdownNodeType);
REQUIRE(node.text == "42
\n");
REQUIRE(node.data == 0);
@@ -239,11 +244,10 @@ TEST_CASE("Parse code block", "[parser][code]")
TEST_CASE("Parse HTML block tag", "[parser][html]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = "
some
\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -253,7 +257,7 @@ TEST_CASE("Parse HTML block tag", "[parser][html]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 16);
- MarkdownNode node = ast.children().front();
+ MarkdownNode& node = ast.children().front();
REQUIRE(node.type == HTMLMarkdownNodeType);
REQUIRE(node.text == "some
\n");
REQUIRE(node.data == 0);
@@ -266,11 +270,10 @@ TEST_CASE("Parse HTML block tag", "[parser][html]")
TEST_CASE("Parse single list item", "[parser][list]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = "- list item\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -280,7 +283,7 @@ TEST_CASE("Parse single list item", "[parser][list]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 12);
- MarkdownNode node = ast.children()[0];
+ MarkdownNode& node = ast.children()[0];
REQUIRE(node.type == ListItemMarkdownNodeType);
REQUIRE(node.text.empty());
REQUIRE(node.data == 2);
@@ -289,20 +292,19 @@ TEST_CASE("Parse single list item", "[parser][list]")
REQUIRE(node.sourceMap[0].location == 0);
REQUIRE(node.sourceMap[0].length == 12);
- node = node.children()[0];
- REQUIRE(node.type == ParagraphMarkdownNodeType);
- REQUIRE(node.text == "list item");
- REQUIRE(node.data == 0);
- REQUIRE(node.children().empty());
- REQUIRE(node.sourceMap.size() == 1);
- REQUIRE(node.sourceMap[0].location == 2);
- REQUIRE(node.sourceMap[0].length == 10);
+ MarkdownNode& item = node.children()[0];
+ REQUIRE(item.type == ParagraphMarkdownNodeType);
+ REQUIRE(item.text == "list item");
+ REQUIRE(item.data == 0);
+ REQUIRE(item.children().empty());
+ REQUIRE(item.sourceMap.size() == 1);
+ REQUIRE(item.sourceMap[0].location == 2);
+ REQUIRE(item.sourceMap[0].length == 10);
}
TEST_CASE("Parse nested list items", "[parser][list]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "- A\n"
@@ -326,7 +328,7 @@ TEST_CASE("Parse nested list items", "[parser][list]")
+ paragraph "E"
*/
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -355,7 +357,7 @@ TEST_CASE("Parse nested list items", "[parser][list]")
REQUIRE(itemA.children()[0].sourceMap[0].length == 2);
// List Item B
- MarkdownNode itemB = itemA.children()[1];
+ MarkdownNode& itemB = itemA.children()[1];
REQUIRE(itemB.type == ListItemMarkdownNodeType);
REQUIRE(itemB.text.empty());
REQUIRE(itemB.data == 2);
@@ -370,13 +372,12 @@ TEST_CASE("Parse nested list items", "[parser][list]")
REQUIRE(itemB.children()[0].text == "B");
REQUIRE(itemB.children()[0].data == 0);
REQUIRE(itemB.children()[0].children().empty());
- MarkdownNode paraBX = itemB.children()[0];
REQUIRE(itemB.children()[0].sourceMap.size() == 1);
REQUIRE(itemB.children()[0].sourceMap[0].location == 10);
REQUIRE(itemB.children()[0].sourceMap[0].length == 2);
// List Item C
- MarkdownNode itemC = itemB.children()[1];
+ MarkdownNode& itemC = itemB.children()[1];
REQUIRE(itemC.type == ListItemMarkdownNodeType);
REQUIRE(itemC.text.empty());
REQUIRE(itemC.data == 2);
@@ -394,7 +395,7 @@ TEST_CASE("Parse nested list items", "[parser][list]")
REQUIRE(itemC.children()[0].sourceMap[0].length == 2);
// List Item D
- MarkdownNode itemD = itemA.children()[2];
+ MarkdownNode& itemD = itemA.children()[2];
REQUIRE(itemD.type == ListItemMarkdownNodeType);
REQUIRE(itemD.text.empty());
REQUIRE(itemD.data == 2);
@@ -412,7 +413,7 @@ TEST_CASE("Parse nested list items", "[parser][list]")
REQUIRE(itemD.children()[0].sourceMap[0].length == 2);
// List Item E
- MarkdownNode itemE = ast.children()[1];
+ MarkdownNode& itemE = ast.children()[1];
REQUIRE(itemE.type == ListItemMarkdownNodeType);
REQUIRE(itemE.text.empty());
REQUIRE(itemE.data == 2);
@@ -433,7 +434,6 @@ TEST_CASE("Parse nested list items", "[parser][list]")
TEST_CASE("Parse list item with multiple paragraphs", "[parser][list]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "- A\n"
@@ -443,7 +443,7 @@ TEST_CASE("Parse list item with multiple paragraphs", "[parser][list]")
"\n"
" E\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -453,7 +453,7 @@ TEST_CASE("Parse list item with multiple paragraphs", "[parser][list]")
REQUIRE(ast.sourceMap[0].location == 0);
REQUIRE(ast.sourceMap[0].length == 24);
- MarkdownNode node = ast.children()[0];
+ MarkdownNode& node = ast.children()[0];
REQUIRE(node.type == ListItemMarkdownNodeType);
REQUIRE(node.text.empty());
REQUIRE(node.data == 2);
@@ -495,11 +495,10 @@ TEST_CASE("Parse list item with multiple paragraphs", "[parser][list]")
TEST_CASE("Parse a simple quote", "[parser][quote]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = "> quote\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -531,7 +530,6 @@ TEST_CASE("Parse a simple quote", "[parser][quote]")
TEST_CASE("Source map crash", "[parser][sourcemap][issue][snowcrash][62]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "* B\n"
@@ -540,7 +538,7 @@ TEST_CASE("Source map crash", "[parser][sourcemap][issue][snowcrash][62]")
"\n"
"* E\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -551,11 +549,10 @@ TEST_CASE("Source map crash", "[parser][sourcemap][issue][snowcrash][62]")
TEST_CASE("Map node without trailing newline", "[parser][sourcemap]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src = "# Hello World";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -577,7 +574,6 @@ TEST_CASE("Map node without trailing newline", "[parser][sourcemap]")
TEST_CASE("Parse six nested level list items", "[parser]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "+ 1\n"
@@ -587,53 +583,52 @@ TEST_CASE("Parse six nested level list items", "[parser]")
" + 5\n"
" + 6\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
REQUIRE(ast.children().size() == 1);
- MarkdownNode& list = ast.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 2);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "1");
-
- list = list.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 2);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "2");
-
- list = list.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 2);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "3");
-
- list = list.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 2);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "4");
-
- list = list.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 2);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "5");
-
- list = list.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 1);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "6");
+ MarkdownNode& item1 = ast.children().back();
+ REQUIRE(item1.type == ListItemMarkdownNodeType);
+ REQUIRE(item1.children().size() == 2);
+ REQUIRE(item1.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(item1.children().front().text == "1");
+
+ MarkdownNode& item2 = item1.children().back();
+ REQUIRE(item2.type == ListItemMarkdownNodeType);
+ REQUIRE(item2.children().size() == 2);
+ REQUIRE(item2.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(item2.children().front().text == "2");
+
+ MarkdownNode& item3 = item2.children().back();
+ REQUIRE(item3.type == ListItemMarkdownNodeType);
+ REQUIRE(item3.children().size() == 2);
+ REQUIRE(item3.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(item3.children().front().text == "3");
+
+ MarkdownNode& item4 = item3.children().back();
+ REQUIRE(item4.type == ListItemMarkdownNodeType);
+ REQUIRE(item4.children().size() == 2);
+ REQUIRE(item4.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(item4.children().front().text == "4");
+
+ MarkdownNode& item5 = item4.children().back();
+ REQUIRE(item5.type == ListItemMarkdownNodeType);
+ REQUIRE(item5.children().size() == 2);
+ REQUIRE(item5.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(item5.children().front().text == "5");
+
+ MarkdownNode& item6 = item5.children().back();
+ REQUIRE(item6.type == ListItemMarkdownNodeType);
+ REQUIRE(item6.children().size() == 1);
+ REQUIRE(item6.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(item6.children().front().text == "6");
}
TEST_CASE("Multi-paragraph list item source map", "[parser][sourcemap]")
{
MarkdownParser parser;
- MarkdownNode ast;
// List item with two paragraphs & lazy indentation:
//
@@ -650,7 +645,7 @@ TEST_CASE("Multi-paragraph list item source map", "[parser][sourcemap]")
" consectetur\n"
"adipiscing elit\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
@@ -685,35 +680,37 @@ TEST_CASE("Multi-paragraph list item source map", "[parser][sourcemap]")
TEST_CASE("Sublist should have more indentation than the list item", "[parser]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= " + 1\n"
"+ 2\n";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
REQUIRE(ast.children().size() == 2);
- MarkdownNode& list = ast.children().front();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 1);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "1");
-
- list = ast.children().back();
- REQUIRE(list.type == ListItemMarkdownNodeType);
- REQUIRE(list.children().size() == 1);
- REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
- REQUIRE(list.children().front().text == "2");
+ {
+ MarkdownNode& list = ast.children().front();
+ REQUIRE(list.type == ListItemMarkdownNodeType);
+ REQUIRE(list.children().size() == 1);
+ REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(list.children().front().text == "1");
+ }
+
+ {
+ MarkdownNode& list = ast.children().back();
+ REQUIRE(list.type == ListItemMarkdownNodeType);
+ REQUIRE(list.children().size() == 1);
+ REQUIRE(list.children().front().type == ParagraphMarkdownNodeType);
+ REQUIRE(list.children().front().text == "2");
+ }
}
TEST_CASE("Empty quota in listitem", "[parser]")
{
MarkdownParser parser;
- MarkdownNode ast;
ByteBuffer src
= "+ a\n"
@@ -722,7 +719,7 @@ TEST_CASE("Empty quota in listitem", "[parser]")
" \"t\"\n"
" }";
- parser.parse(src, ast);
+ MarkdownNode ast = parser.parse(src);
REQUIRE(ast.type == RootMarkdownNodeType);
REQUIRE(ast.text.empty());
diff --git a/ext/snowcrash/src/SignatureSectionProcessor.h b/ext/snowcrash/src/SignatureSectionProcessor.h
index e5d195409..b06eb0ba4 100644
--- a/ext/snowcrash/src/SignatureSectionProcessor.h
+++ b/ext/snowcrash/src/SignatureSectionProcessor.h
@@ -43,7 +43,8 @@ namespace scpl
/**
* \brief Process section signature markdown node (Default)
*/
- static MarkdownNodeIterator processSignature(const MarkdownNodeIterator& node,
+ template
+ static It processSignature(It node,
const MarkdownNodes& siblings,
snowcrash::SectionParserData& pd,
snowcrash::SectionLayout& layout,
@@ -71,7 +72,8 @@ namespace scpl
*
* \return Signature data
*/
- static Signature parseSignature(const MarkdownNodeIterator& node,
+ template
+ static Signature parseSignature(It node,
snowcrash::SectionParserData& pd,
const SignatureTraits& traits,
snowcrash::Report& report,
diff --git a/ext/snowcrash/src/snowcrash.cc b/ext/snowcrash/src/snowcrash.cc
index 6d40989d8..2584b3d42 100644
--- a/ext/snowcrash/src/snowcrash.cc
+++ b/ext/snowcrash/src/snowcrash.cc
@@ -63,8 +63,7 @@ int snowcrash::parse(
// Parse Markdown
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
// Build SectionParserData
SectionParserData pd(options, source, out.node);
diff --git a/ext/snowcrash/test/snowcrashtest.h b/ext/snowcrash/test/snowcrashtest.h
index 9d2f48b24..2ef3261e5 100644
--- a/ext/snowcrash/test/snowcrashtest.h
+++ b/ext/snowcrash/test/snowcrashtest.h
@@ -12,6 +12,7 @@
#include
#include "MarkdownParser.h"
#include "SectionParser.h"
+#include "SignatureSectionProcessor.h"
namespace snowcrashtest
{
@@ -41,12 +42,11 @@ namespace snowcrashtest
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
snowcrash::ParseResult blueprint;
snowcrash::ParseResult* bppointer;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
@@ -118,27 +118,17 @@ namespace snowcrashtest
/**
* \brief Helper to test signature parsing. Uses Blueprint as dummy type.
*/
- struct SignatureParserHelper {
-
+ class SignatureParserHelper
+ {
static scpl::Signature parse(const mdp::ByteBuffer& source,
const snowcrash::ParseResultRef& out,
const scpl::SignatureTraits::Traits traits,
- const mdp::MarkdownNode* node = NULL)
+ const mdp::MarkdownNode& markdownAST)
{
- mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
-
- snowcrash::ParseResult blueprint;
-
- if (node == NULL) {
- markdownParser.parse(source, markdownAST);
- } else {
- markdownAST = *node;
- }
-
REQUIRE(!markdownAST.children().empty());
+ snowcrash::ParseResult blueprint;
snowcrash::SectionParserData pd(0, source, blueprint.node);
scpl::Signature signature;
@@ -149,6 +139,21 @@ namespace snowcrashtest
return signature;
}
+
+ public:
+ static scpl::Signature parse(const mdp::ByteBuffer& source,
+ const snowcrash::ParseResultRef& out,
+ const scpl::SignatureTraits::Traits traits,
+ const mdp::MarkdownNode* node = NULL)
+ {
+ if (node)
+ return parse(source, out, traits, *node);
+
+ mdp::MarkdownParser markdownParser;
+ mdp::MarkdownNode markdown = markdownParser.parse(source);
+
+ return parse(source, out, traits, markdown);
+ }
};
/**
diff --git a/ext/snowcrash/test/test-ActionParser.cc b/ext/snowcrash/test/test-ActionParser.cc
index 53bb82114..6d1b96bcf 100644
--- a/ext/snowcrash/test/test-ActionParser.cc
+++ b/ext/snowcrash/test/test-ActionParser.cc
@@ -22,9 +22,8 @@ const mdp::ByteBuffer ActionFixture
TEST_CASE("Method block classifier", "[action]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(ActionFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ActionFixture);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-AssetParser.cc b/ext/snowcrash/test/test-AssetParser.cc
index 7589ea788..66c72aadc 100644
--- a/ext/snowcrash/test/test-AssetParser.cc
+++ b/ext/snowcrash/test/test-AssetParser.cc
@@ -25,8 +25,7 @@ const mdp::ByteBuffer SchemaAssetFixture
TEST_CASE("Recognize explicit body signature", "[asset]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(BodyAssetFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(BodyAssetFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -40,8 +39,7 @@ TEST_CASE("Recognize body with content on signature", "[asset]")
" Lorem Ipsum\n";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -51,8 +49,7 @@ TEST_CASE("Recognize body with content on signature", "[asset]")
TEST_CASE("Recognize schema signature", "[asset]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(SchemaAssetFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(SchemaAssetFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-AttributesParser.cc b/ext/snowcrash/test/test-AttributesParser.cc
index f437b72b5..1901817b4 100644
--- a/ext/snowcrash/test/test-AttributesParser.cc
+++ b/ext/snowcrash/test/test-AttributesParser.cc
@@ -17,9 +17,8 @@ const mdp::ByteBuffer AttributesFixture = "+ Attributes (array[[Coupon](#coupon)
TEST_CASE("Recognize explicit attributes signature", "[attributes]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(AttributesFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(AttributesFixture);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-BlueprintParser.cc b/ext/snowcrash/test/test-BlueprintParser.cc
index 05c754354..9f7b7bbac 100644
--- a/ext/snowcrash/test/test-BlueprintParser.cc
+++ b/ext/snowcrash/test/test-BlueprintParser.cc
@@ -26,9 +26,8 @@ mdp::ByteBuffer BlueprintFixture
TEST_CASE("Blueprint block classifier", "[blueprint]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(BlueprintFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(BlueprintFixture);
REQUIRE(!markdownAST.children().empty());
@@ -526,13 +525,12 @@ TEST_CASE("Parsing blueprint with mson data structures", "[blueprint]")
"\n";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
ParseResult blueprint;
mson::NamedTypeBaseTable::iterator baseIt;
mson::NamedTypeInheritanceTable::iterator inheritanceIt;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
snowcrash::SectionParserData pd(ExportSourcemapOption, source, blueprint.node);
diff --git a/ext/snowcrash/test/test-DataStructureGroupParser.cc b/ext/snowcrash/test/test-DataStructureGroupParser.cc
index 1b2a896bc..9749b5f46 100644
--- a/ext/snowcrash/test/test-DataStructureGroupParser.cc
+++ b/ext/snowcrash/test/test-DataStructureGroupParser.cc
@@ -17,9 +17,8 @@ const mdp::ByteBuffer DataStructuresFixture = "# Data structure";
TEST_CASE("Recognize explicit data structures signature", "[data_structure_group]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(DataStructuresFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(DataStructuresFixture);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-HeadersParser.cc b/ext/snowcrash/test/test-HeadersParser.cc
index 5d4b5743d..95eaa0661 100644
--- a/ext/snowcrash/test/test-HeadersParser.cc
+++ b/ext/snowcrash/test/test-HeadersParser.cc
@@ -26,8 +26,7 @@ const mdp::ByteBuffer HeadersSignatureContentFixture
TEST_CASE("recognize headers signature", "[headers]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(HeadersFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(HeadersFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-MSONMixinParser.cc b/ext/snowcrash/test/test-MSONMixinParser.cc
index c7657b7f7..68387687c 100644
--- a/ext/snowcrash/test/test-MSONMixinParser.cc
+++ b/ext/snowcrash/test/test-MSONMixinParser.cc
@@ -17,9 +17,8 @@ TEST_CASE("Mixin block classifier", "[mson][mixin]")
mdp::ByteBuffer source = "- Include Person";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
REQUIRE(markdownAST.children().front().type == mdp::ListItemMarkdownNodeType);
diff --git a/ext/snowcrash/test/test-MSONOneOfParser.cc b/ext/snowcrash/test/test-MSONOneOfParser.cc
index 7ecd33c89..cc0f2e4c5 100644
--- a/ext/snowcrash/test/test-MSONOneOfParser.cc
+++ b/ext/snowcrash/test/test-MSONOneOfParser.cc
@@ -17,9 +17,8 @@ TEST_CASE("OneOf block classifier", "[mson][one_of]")
mdp::ByteBuffer source = "- one Of";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
REQUIRE(markdownAST.children().front().type == mdp::ListItemMarkdownNodeType);
@@ -38,9 +37,8 @@ TEST_CASE("OneOf be tolerant on parsing input", "[mson][one_of]")
mdp::ByteBuffer source = "- one \t Of";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
REQUIRE(sectionType == MSONOneOfSectionType);
diff --git a/ext/snowcrash/test/test-MSONTypeSectionParser.cc b/ext/snowcrash/test/test-MSONTypeSectionParser.cc
index eaada681b..14ec459bc 100644
--- a/ext/snowcrash/test/test-MSONTypeSectionParser.cc
+++ b/ext/snowcrash/test/test-MSONTypeSectionParser.cc
@@ -17,9 +17,8 @@ TEST_CASE("Type Section header block classifier", "[mson][type_section]")
mdp::ByteBuffer source = "## Items";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
REQUIRE(markdownAST.children().front().type == mdp::HeaderMarkdownNodeType);
@@ -49,9 +48,8 @@ TEST_CASE("Type Section list block classifier", "[mson][type_section]")
mdp::ByteBuffer source = "- Items";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
REQUIRE(markdownAST.children().front().type == mdp::ListItemMarkdownNodeType);
diff --git a/ext/snowcrash/test/test-MSONUtility.cc b/ext/snowcrash/test/test-MSONUtility.cc
index 92c1391e6..608401063 100644
--- a/ext/snowcrash/test/test-MSONUtility.cc
+++ b/ext/snowcrash/test/test-MSONUtility.cc
@@ -417,9 +417,8 @@ TEST_CASE("Parse canonical type definition", "[mson][utility]")
mdp::ByteBuffer source = "+ (number, required)";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
snowcrash::SectionParserData pd(0, source, blueprint);
parseTypeDefinition(markdownAST.children().begin(), pd, attributes, typeDefinition.report, typeDefinition.node);
@@ -444,9 +443,8 @@ TEST_CASE("Parse type definition with non recognized type attribute", "[mson][ut
mdp::ByteBuffer source = "+ ([Person][], optinal)";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
snowcrash::SectionParserData pd(0, source, blueprint);
pd.namedTypeBaseTable["Person"] = mson::ObjectBaseType;
@@ -473,9 +471,8 @@ TEST_CASE("Parse type definition when non-structure type has nested types", "[ms
mdp::ByteBuffer source = "+ (Person[number, string])";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
snowcrash::SectionParserData pd(0, source, blueprint);
pd.namedTypeBaseTable["Person"] = mson::ObjectBaseType;
@@ -568,9 +565,8 @@ TEST_CASE("Parse canonical property name", "[mson][utility]")
mdp::ByteBuffer source = "+ " + id;
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
snowcrash::SectionParserData pd(0, source, blueprint);
parsePropertyName(markdownAST.children().begin(), pd, id, propertyName.report, propertyName.node);
@@ -590,9 +586,8 @@ TEST_CASE("Parse variable property name", "[mson][utility]")
mdp::ByteBuffer source = "+ " + id;
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
snowcrash::SectionParserData pd(0, source, blueprint);
parsePropertyName(markdownAST.children().begin(), pd, id, propertyName.report, propertyName.node);
@@ -618,9 +613,8 @@ TEST_CASE("Parse multi-value variable property name", "[mson][utility]")
mdp::ByteBuffer source = "+ " + id;
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
snowcrash::SectionParserData pd(0, source, blueprint);
pd.namedTypeBaseTable["Custom"] = mson::ValueBaseType;
diff --git a/ext/snowcrash/test/test-ParameterParser.cc b/ext/snowcrash/test/test-ParameterParser.cc
index f4482efb5..39d526c7f 100644
--- a/ext/snowcrash/test/test-ParameterParser.cc
+++ b/ext/snowcrash/test/test-ParameterParser.cc
@@ -23,8 +23,7 @@ const mdp::ByteBuffer ParameterFixture
TEST_CASE("Recognize parameter definition signature", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(ParameterFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ParameterFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -34,8 +33,7 @@ TEST_CASE("Recognize parameter definition signature", "[parameter]")
TEST_CASE("Recognize parameter with just parameter name", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -45,8 +43,7 @@ TEST_CASE("Recognize parameter with just parameter name", "[parameter]")
TEST_CASE("Recognize parameter with escaped identifier for new syntax", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ `user-name`", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ `user-name`");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -56,8 +53,7 @@ TEST_CASE("Recognize parameter with escaped identifier for new syntax", "[parame
TEST_CASE("Recognize parameter with parameter name and without any values or description", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (optional, string)", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (optional, string)");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -67,8 +63,7 @@ TEST_CASE("Recognize parameter with parameter name and without any values or des
TEST_CASE("Recognize parameter with parameter type as first trait", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (string, optional)", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (string, optional)");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -78,8 +73,7 @@ TEST_CASE("Recognize parameter with parameter type as first trait", "[parameter]
TEST_CASE("Recognize parameter with new syntax example value", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id : ``1`0`` (number)", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id : ``1`0`` (number)");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -89,8 +83,7 @@ TEST_CASE("Recognize parameter with new syntax example value", "[parameter]")
TEST_CASE("Recognize parameter with only new syntax example value", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id: 10", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id: 10");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -100,8 +93,7 @@ TEST_CASE("Recognize parameter with only new syntax example value", "[parameter]
TEST_CASE("Recognize parameter with new syntax description which has old description identifier", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (string) - This is nice and ... awesome", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (string) - This is nice and ... awesome");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -111,8 +103,7 @@ TEST_CASE("Recognize parameter with new syntax description which has old descrip
TEST_CASE("Recognize parameter with new syntax description", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (string) - This is nice and awesome", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (string) - This is nice and awesome");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -122,8 +113,7 @@ TEST_CASE("Recognize parameter with new syntax description", "[parameter]")
TEST_CASE("Recognize parameter with only old syntax description", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id ... The user id", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id ... The user id");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -133,8 +123,7 @@ TEST_CASE("Recognize parameter with only old syntax description", "[parameter]")
TEST_CASE("Recognize parameter with brackets in old syntax example value", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (optional, oData, `substringof('homer', id)`) ... test", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (optional, oData, `substringof('homer', id)`) ... test");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -144,8 +133,7 @@ TEST_CASE("Recognize parameter with brackets in old syntax example value", "[par
TEST_CASE("Recognize escaped parameter with brackets in old syntax example value", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ `id` (optional, oData, `example`)", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ `id` (optional, oData, `example`)");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -155,8 +143,7 @@ TEST_CASE("Recognize escaped parameter with brackets in old syntax example value
TEST_CASE("Recognize parameter with old syntax description after attributes", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (optional, string) ... test", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (optional, string) ... test");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -166,8 +153,7 @@ TEST_CASE("Recognize parameter with old syntax description after attributes", "[
TEST_CASE("Recognize parameter with sample value in attributes", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (string, `10`)", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (string, `10`)");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -177,8 +163,7 @@ TEST_CASE("Recognize parameter with sample value in attributes", "[parameter]")
TEST_CASE("Recognize parameter with enum in attributes", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (enum[string])", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (enum[string])");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -188,8 +173,7 @@ TEST_CASE("Recognize parameter with enum in attributes", "[parameter]")
TEST_CASE("Recognize parameter with both sample value and enum in attributes", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id (enum[string], `10`)", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id (enum[string], `10`)");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -199,8 +183,7 @@ TEST_CASE("Recognize parameter with both sample value and enum in attributes", "
TEST_CASE("Recognize parameter with old syntax default value but have enum in attributes", "[parameter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse("+ id = 10 (enum[number])", markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse("+ id = 10 (enum[number])");
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -214,8 +197,7 @@ TEST_CASE("Recognize parameter with ambiguous signature but uses MSON syntax for
" + Default: 1";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -229,8 +211,7 @@ TEST_CASE("Recognize parameter with ambiguous signature but uses MSON syntax for
" + Sample: 1";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -244,8 +225,7 @@ TEST_CASE("Recognize parameter with ambiguous signature but uses MSON syntax for
" + Members";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -259,8 +239,7 @@ TEST_CASE("Recognize parameter with ambiguous signature but uses old syntax for
" + Values";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-ParametersParser.cc b/ext/snowcrash/test/test-ParametersParser.cc
index 316dc59bc..82c66b8e4 100644
--- a/ext/snowcrash/test/test-ParametersParser.cc
+++ b/ext/snowcrash/test/test-ParametersParser.cc
@@ -26,8 +26,7 @@ const mdp::ByteBuffer ParametersFixture
TEST_CASE("Recognize Parameters section block", "[parameters]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(ParametersFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ParametersFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-PayloadParser.cc b/ext/snowcrash/test/test-PayloadParser.cc
index 50344f862..f6e46a4f0 100644
--- a/ext/snowcrash/test/test-PayloadParser.cc
+++ b/ext/snowcrash/test/test-PayloadParser.cc
@@ -41,8 +41,7 @@ const mdp::ByteBuffer EmptyBodyFixture
TEST_CASE("recognize request signature", "[payload]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(RequestFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(RequestFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -52,8 +51,7 @@ TEST_CASE("recognize request signature", "[payload]")
TEST_CASE("recognize abbreviated request signature", "[payload]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(RequestBodyFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(RequestBodyFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -63,8 +61,7 @@ TEST_CASE("recognize abbreviated request signature", "[payload]")
TEST_CASE("recognize abbreviated response signature", "[payload]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(ResponseBodyFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ResponseBodyFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -74,8 +71,7 @@ TEST_CASE("recognize abbreviated response signature", "[payload]")
TEST_CASE("recognize empty body response signature as non-abbreviated", "[payload]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(EmptyBodyFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(EmptyBodyFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-RelationParser.cc b/ext/snowcrash/test/test-RelationParser.cc
index 4fb4d452e..5765c5097 100644
--- a/ext/snowcrash/test/test-RelationParser.cc
+++ b/ext/snowcrash/test/test-RelationParser.cc
@@ -17,9 +17,8 @@ mdp::ByteBuffer RelationFixture = "+ Relation: create";
TEST_CASE("Recognize relation signature", "[relation]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(RelationFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(RelationFixture);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -31,9 +30,8 @@ TEST_CASE("Relation signature without colon", "[relation]")
mdp::ByteBuffer source = "+ Relation delete";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -58,9 +56,8 @@ TEST_CASE("Relation identifier starting with non lower alphabet", "[relation]")
mdp::ByteBuffer source = "+ Relation: 9delete";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -80,9 +77,8 @@ TEST_CASE("Relation identifier containing capital letters", "[relation]")
mdp::ByteBuffer source = "+ Relation: deLete";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -102,9 +98,8 @@ TEST_CASE("Relation identifier containing special characters", "[relation]")
mdp::ByteBuffer source = "+ Relation: del*et_e";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
@@ -124,9 +119,8 @@ TEST_CASE("Relation identifier consisting of dots and dashes", "[relation]")
mdp::ByteBuffer source = "+ Relation: delete-task.2";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-ResourceGroupParser.cc b/ext/snowcrash/test/test-ResourceGroupParser.cc
index 17065bf36..15ee677da 100644
--- a/ext/snowcrash/test/test-ResourceGroupParser.cc
+++ b/ext/snowcrash/test/test-ResourceGroupParser.cc
@@ -33,9 +33,8 @@ TEST_CASE("Resource group block classifier", "[resource_group]")
"Assembly language\n";
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(source, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(source);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-ResourceParser.cc b/ext/snowcrash/test/test-ResourceParser.cc
index 09e36cb84..65aa7fef0 100644
--- a/ext/snowcrash/test/test-ResourceParser.cc
+++ b/ext/snowcrash/test/test-ResourceParser.cc
@@ -34,9 +34,8 @@ mdp::ByteBuffer ResourceFixture
TEST_CASE("Resource block classifier", "[resource]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
SectionType sectionType;
- markdownParser.parse(ResourceFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ResourceFixture);
REQUIRE(!markdownAST.children().empty());
sectionType = SectionProcessor::sectionType(markdownAST.children().begin());
diff --git a/ext/snowcrash/test/test-SectionParser.cc b/ext/snowcrash/test/test-SectionParser.cc
index cc4ff5d21..5c907d0a4 100644
--- a/ext/snowcrash/test/test-SectionParser.cc
+++ b/ext/snowcrash/test/test-SectionParser.cc
@@ -25,8 +25,7 @@ const mdp::ByteBuffer ListSectionFixture
TEST_CASE("Header adapter with header section", "[adapter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(HeaderSectionFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(HeaderSectionFixture);
SectionParserData pd(0, HeaderSectionFixture, Blueprint());
@@ -46,8 +45,7 @@ TEST_CASE("Header adapter with header section", "[adapter]")
TEST_CASE("Header adapter with list section", "[adapter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(ListSectionFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ListSectionFixture);
SectionParserData pd(0, ListSectionFixture, Blueprint());
@@ -59,8 +57,7 @@ TEST_CASE("Header adapter with list section", "[adapter]")
TEST_CASE("List adapter with List section", "[adapter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(ListSectionFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ListSectionFixture);
SectionParserData pd(0, ListSectionFixture, Blueprint());
@@ -70,7 +67,7 @@ TEST_CASE("List adapter with List section", "[adapter]")
MarkdownNodeIterator it = ListSectionAdapter::startingNode(markdownAST.children().begin(), pd);
REQUIRE(it->text == "Signature");
- MarkdownNodes collection
+ const MarkdownNodes& collection
= ListSectionAdapter::startingNodeSiblings(markdownAST.children().begin(), markdownAST.children());
REQUIRE(collection.size() == 2);
@@ -81,8 +78,7 @@ TEST_CASE("List adapter with List section", "[adapter]")
TEST_CASE("List adapter with Header section", "[adapter]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(HeaderSectionFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(HeaderSectionFixture);
SectionParserData pd(0, HeaderSectionFixture, Blueprint());
diff --git a/ext/snowcrash/test/test-Signature.cc b/ext/snowcrash/test/test-Signature.cc
index cabd612ed..377a0ec92 100644
--- a/ext/snowcrash/test/test-Signature.cc
+++ b/ext/snowcrash/test/test-Signature.cc
@@ -398,9 +398,7 @@ TEST_CASE("Property signature parsing without a value", "[signature]")
TEST_CASE("Element signature parsing without value and attributes", "[signature]")
{
mdp::MarkdownNode source(mdp::RootMarkdownNodeType, NULL, "");
- mdp::MarkdownNode paragraph(mdp::ParagraphMarkdownNodeType, &source, "- content is the king");
-
- source.children().push_back(paragraph);
+ source.children().emplace_back(mdp::ParagraphMarkdownNodeType, &source, "- content is the king");
ParseResult blueprint;
scpl::Signature signature = SignatureParserHelper::parse("", blueprint, ElementMemberTypeTraits, &source);
diff --git a/ext/snowcrash/test/test-ValuesParser.cc b/ext/snowcrash/test/test-ValuesParser.cc
index 20ced6a15..b64582c71 100644
--- a/ext/snowcrash/test/test-ValuesParser.cc
+++ b/ext/snowcrash/test/test-ValuesParser.cc
@@ -22,8 +22,7 @@ const mdp::ByteBuffer ValuesFixture
TEST_CASE("Recognize values signature", "[values]")
{
mdp::MarkdownParser markdownParser;
- mdp::MarkdownNode markdownAST;
- markdownParser.parse(ValuesFixture, markdownAST);
+ mdp::MarkdownNode markdownAST = markdownParser.parse(ValuesFixture);
REQUIRE(!markdownAST.children().empty());
SectionType sectionType = SectionProcessor::sectionType(markdownAST.children().begin());