Initial mermaid class diagram support
This commit is contained in:
@@ -107,4 +107,10 @@ TEST_CASE("t00002", "[test-case][class]")
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
{
|
||||
auto mmd = generate_class_mermaid(diagram, *model);
|
||||
|
||||
save_puml(
|
||||
config.output_directory() + "/" + diagram->name + ".mmd", mmd);
|
||||
}
|
||||
}
|
||||
@@ -95,4 +95,10 @@ TEST_CASE("t00003", "[test-case][class]")
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
{
|
||||
auto mmd = generate_class_mermaid(diagram, *model);
|
||||
|
||||
save_puml(
|
||||
config.output_directory() + "/" + diagram->name + ".mmd", mmd);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,4 +91,10 @@ TEST_CASE("t00004", "[test-case][class]")
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
{
|
||||
auto mmd = generate_class_mermaid(diagram, *model);
|
||||
|
||||
save_puml(
|
||||
config.output_directory() + "/" + diagram->name + ".mmd", mmd);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,6 +111,24 @@ auto generate_diagram_json(
|
||||
|
||||
return nlohmann::json::parse(ss.str());
|
||||
}
|
||||
|
||||
template <typename DiagramConfig, typename DiagramModel>
|
||||
auto generate_diagram_mermaid(
|
||||
std::shared_ptr<clanguml::config::diagram> config, DiagramModel &model)
|
||||
{
|
||||
using diagram_config = DiagramConfig;
|
||||
using diagram_model = DiagramModel;
|
||||
using diagram_generator =
|
||||
typename clanguml::common::generators::diagram_generator_t<
|
||||
DiagramConfig,
|
||||
clanguml::common::generators::mermaid_generator_tag>::type;
|
||||
|
||||
std::stringstream ss;
|
||||
|
||||
ss << diagram_generator(dynamic_cast<diagram_config &>(*config), model);
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<clanguml::class_diagram::model::diagram> generate_class_diagram(
|
||||
@@ -209,6 +227,14 @@ nlohmann::json generate_include_json(
|
||||
config, model);
|
||||
}
|
||||
|
||||
std::string generate_class_mermaid(
|
||||
std::shared_ptr<clanguml::config::diagram> config,
|
||||
clanguml::class_diagram::model::diagram &model)
|
||||
{
|
||||
return detail::generate_diagram_mermaid<clanguml::config::class_diagram>(
|
||||
config, model);
|
||||
}
|
||||
|
||||
void save_puml(const std::string &path, const std::string &puml)
|
||||
{
|
||||
std::filesystem::path p{path};
|
||||
@@ -229,6 +255,17 @@ void save_json(const std::string &path, const nlohmann::json &j)
|
||||
ofs.close();
|
||||
}
|
||||
|
||||
void save_mermaid(const std::string &path, const std::string &mmd)
|
||||
{
|
||||
std::filesystem::path p{path};
|
||||
std::filesystem::create_directory(p.parent_path());
|
||||
std::ofstream ofs;
|
||||
ofs.open(p, std::ofstream::out | std::ofstream::trunc);
|
||||
ofs << mmd;
|
||||
ofs.close();
|
||||
}
|
||||
|
||||
|
||||
using namespace clanguml::test::matchers;
|
||||
|
||||
///
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG
|
||||
|
||||
#include "class_diagram/generators/plantuml/class_diagram_generator.h"
|
||||
#include "class_diagram/generators/mermaid/class_diagram_generator.h"
|
||||
#include "class_diagram/model/diagram.h"
|
||||
#include "class_diagram/visitor/translation_unit_visitor.h"
|
||||
#include "common/clang_utils.h"
|
||||
|
||||
Reference in New Issue
Block a user