diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c4b60f9..be813472 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # CHANGELOG + * Excluded package diagram relationships to rejected packages (#185) * Added 'title' diagram property (#184) * Make sure sequence diagram messages generated during static variable initialization are rendered only once (#183) diff --git a/src/package_diagram/generators/json/package_diagram_generator.cc b/src/package_diagram/generators/json/package_diagram_generator.cc index d37230ba..15656634 100644 --- a/src/package_diagram/generators/json/package_diagram_generator.cc +++ b/src/package_diagram/generators/json/package_diagram_generator.cc @@ -36,6 +36,14 @@ void generator::generate_relationships( if (model().should_include(relationship_t::kDependency)) { for (const auto &r : p.relationships()) { nlohmann::json rel = r; + + auto destination_package = model().get(r.destination()); + + if (!destination_package || + !model().should_include( + dynamic_cast(*destination_package))) + continue; + rel["source"] = std::to_string(p.id()); parent["relationships"].push_back(std::move(rel)); } diff --git a/src/package_diagram/generators/mermaid/package_diagram_generator.cc b/src/package_diagram/generators/mermaid/package_diagram_generator.cc index 1b68d131..de81903c 100644 --- a/src/package_diagram/generators/mermaid/package_diagram_generator.cc +++ b/src/package_diagram/generators/mermaid/package_diagram_generator.cc @@ -45,9 +45,17 @@ void generator::generate_relationships( for (const auto &r : p.relationships()) { std::stringstream relstr; try { - auto destination = model().to_alias(r.destination()); - if (!destination.empty()) { - relstr << p.alias() << " -.-> " << destination << '\n'; + auto destination_package = model().get(r.destination()); + + if (!destination_package || + !model().should_include( + dynamic_cast(*destination_package))) + continue; + + auto destination_alias = model().to_alias(r.destination()); + if (!destination_alias.empty()) { + relstr << p.alias() << " -.-> " << destination_alias + << '\n'; ostr << indent(1) << relstr.str(); } } diff --git a/src/package_diagram/generators/plantuml/package_diagram_generator.cc b/src/package_diagram/generators/plantuml/package_diagram_generator.cc index 8ee8d7e2..fd6ec167 100644 --- a/src/package_diagram/generators/plantuml/package_diagram_generator.cc +++ b/src/package_diagram/generators/plantuml/package_diagram_generator.cc @@ -38,9 +38,17 @@ void generator::generate_relationships( for (const auto &r : p.relationships()) { std::stringstream relstr; try { - auto destination = model().to_alias(r.destination()); - if (!destination.empty()) { - relstr << p.alias() << " ..> " << destination << '\n'; + auto destination_package = model().get(r.destination()); + + if (!destination_package || + !model().should_include( + dynamic_cast(*destination_package))) + continue; + + auto destination_alias = model().to_alias(r.destination()); + + if (!destination_alias.empty()) { + relstr << p.alias() << " ..> " << destination_alias << '\n'; ostr << relstr.str(); } }