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

View File

@@ -41,9 +41,8 @@ std::string method_parameter::to_string(
const common::model::namespace_ &using_namespace) const
{
using namespace clanguml::util;
auto type_ns = common::model::namespace_{type()}
.relative_to(using_namespace)
.to_string();
auto type_ns =
using_namespace.relative(common::model::namespace_{type()}.to_string());
if (default_value().empty())
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();
ostr << "package [" << p.name() << "] ";
ostr << "as " << p.alias();
// Don't generate packages from namespaces filtered out by
// using_namespace
if (!uns.starts_with(p.full_name(false))) {
ostr << "package [" << p.name() << "] ";
ostr << "as " << p.alias();
if (p.is_deprecated())
ostr << " <<deprecated>>";
if (p.is_deprecated())
ostr << " <<deprecated>>";
if (!p.style().empty())
ostr << " " << p.style();
if (!p.style().empty())
ostr << " " << p.style();
ostr << " {" << '\n';
ostr << " {" << '\n';
}
for (const auto &subpackage : p) {
generate(dynamic_cast<const package &>(*subpackage), ostr);
}
ostr << "}" << '\n';
if (!uns.starts_with(p.full_name(false))) {
ostr << "}" << '\n';
}
generate_notes(ostr, p);
}
@@ -92,11 +98,9 @@ void generator::generate(std::ostream &ostr) const
generate_plantuml_directives(ostr, m_config.puml().before);
if (m_config.should_include_entities("packages")) {
for (const auto &p : m_model) {
generate(dynamic_cast<package &>(*p), ostr);
ostr << '\n';
}
for (const auto &p : m_model) {
generate(dynamic_cast<package &>(*p), ostr);
ostr << '\n';
}
// Process package relationships