peg_parser::ParserGenerator<void, PlantUML&> g;
g.setSeparator(g["Whitespace"] << "[\t \n]");
g["Identifier"] << "[a-zA-Z] [a-zA-Z0-9_]*";
// // elements
g["Class"] << "'class' Identifier" >> [](auto e, auto& p) { p.elements.push_back(PlantUML::Element{PlantUML::Element::Type::Class, e[0].string()}); };
// diagram
g["Start"] << "'@startuml'";
g["End"] << "'@enduml'";
g["Diagram"] << "Start Class* End";
g.setStart(g["Diagram"]);
static constexpr auto two_classes_puml =
"@startuml\
class class\
class class2\
@enduml";
TEST_CASE( "diagram with all simple elements is parsed", "[Parser]" ) {
Parser parser;
PlantUML r = parser.parse(two_classes_puml);
REQUIRE(r.elements.size() == 2);
}