Fixed skipping using_namespace when generating packages

This commit is contained in:
Bartek Kryza
2022-03-05 20:15:59 +01:00
parent f84e86ca6d
commit 768faaa1c8
3 changed files with 37 additions and 24 deletions

View File

@@ -281,19 +281,25 @@ void generator::generate(
void generator::generate(const package &p, std::ostream &ostr, void generator::generate(const package &p, std::ostream &ostr,
std::ostream &relationships_ostr) const std::ostream &relationships_ostr) const
{ {
const auto &uns = m_config.using_namespace();
if (m_config.generate_packages()) { if (m_config.generate_packages()) {
LOG_DBG("Generating package {}", p.name()); LOG_DBG("Generating package {}", p.name());
ostr << "package [" << p.name() << "] "; // Don't generate packages from namespaces filtered out by
ostr << "as " << p.alias(); // using_namespace
if (!uns.starts_with(p.full_name(false))) {
ostr << "package [" << p.name() << "] ";
ostr << "as " << p.alias();
if (p.is_deprecated()) if (p.is_deprecated())
ostr << " <<deprecated>>"; ostr << " <<deprecated>>";
if (!p.style().empty()) if (!p.style().empty())
ostr << " " << p.style(); ostr << " " << p.style();
ostr << " {" << '\n'; ostr << " {" << '\n';
}
} }
for (const auto &subpackage : p) { for (const auto &subpackage : p) {
@@ -316,7 +322,11 @@ void generator::generate(const package &p, std::ostream &ostr,
} }
if (m_config.generate_packages()) { if (m_config.generate_packages()) {
ostr << "}" << '\n'; // Don't generate packages from namespaces filtered out by
// using_namespace
if (!uns.starts_with(p.full_name(false))) {
ostr << "}" << '\n';
}
} }
generate_notes(ostr, p); generate_notes(ostr, p);

View File

@@ -41,9 +41,8 @@ std::string method_parameter::to_string(
const common::model::namespace_ &using_namespace) const const common::model::namespace_ &using_namespace) const
{ {
using namespace clanguml::util; using namespace clanguml::util;
auto type_ns = common::model::namespace_{type()} auto type_ns =
.relative_to(using_namespace) using_namespace.relative(common::model::namespace_{type()}.to_string());
.to_string();
if (default_value().empty()) if (default_value().empty())
return fmt::format("{} {}", type_ns, name()); return fmt::format("{} {}", type_ns, name());

View File

@@ -66,22 +66,28 @@ void generator::generate(const package &p, std::ostream &ostr) const
const auto &uns = m_config.using_namespace(); const auto &uns = m_config.using_namespace();
ostr << "package [" << p.name() << "] "; // Don't generate packages from namespaces filtered out by
ostr << "as " << p.alias(); // using_namespace
if (!uns.starts_with(p.full_name(false))) {
ostr << "package [" << p.name() << "] ";
ostr << "as " << p.alias();
if (p.is_deprecated()) if (p.is_deprecated())
ostr << " <<deprecated>>"; ostr << " <<deprecated>>";
if (!p.style().empty()) if (!p.style().empty())
ostr << " " << p.style(); ostr << " " << p.style();
ostr << " {" << '\n'; ostr << " {" << '\n';
}
for (const auto &subpackage : p) { for (const auto &subpackage : p) {
generate(dynamic_cast<const package &>(*subpackage), ostr); generate(dynamic_cast<const package &>(*subpackage), ostr);
} }
ostr << "}" << '\n'; if (!uns.starts_with(p.full_name(false))) {
ostr << "}" << '\n';
}
generate_notes(ostr, p); generate_notes(ostr, p);
} }
@@ -92,11 +98,9 @@ void generator::generate(std::ostream &ostr) const
generate_plantuml_directives(ostr, m_config.puml().before); generate_plantuml_directives(ostr, m_config.puml().before);
if (m_config.should_include_entities("packages")) { for (const auto &p : m_model) {
for (const auto &p : m_model) { generate(dynamic_cast<package &>(*p), ostr);
generate(dynamic_cast<package &>(*p), ostr); ostr << '\n';
ostr << '\n';
}
} }
// Process package relationships // Process package relationships