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());