Added support for iterating over diagram elements from inja templates (fixes #54)
This commit is contained in:
@@ -489,6 +489,8 @@ void generator::generate_relationships(
|
||||
|
||||
void generator::generate(std::ostream &ostr) const
|
||||
{
|
||||
update_context();
|
||||
|
||||
ostr << "@startuml" << '\n';
|
||||
|
||||
generate_plantuml_directives(ostr, m_config.puml().before);
|
||||
|
||||
@@ -42,6 +42,8 @@ public:
|
||||
class_ &operator=(const class_ &) = delete;
|
||||
class_ &operator=(class_ &&) = delete;
|
||||
|
||||
std::string type_name() const override { return "class"; }
|
||||
|
||||
bool is_struct() const;
|
||||
void is_struct(bool is_struct);
|
||||
|
||||
|
||||
@@ -271,6 +271,28 @@ std::string diagram::to_alias(
|
||||
throw error::uml_alias_missing(fmt::format("Missing alias for {}", id));
|
||||
}
|
||||
|
||||
inja::json diagram::context() const {
|
||||
inja::json ctx;
|
||||
ctx["name"] = name();
|
||||
ctx["type"] = "class";
|
||||
|
||||
inja::json::array_t elements{};
|
||||
|
||||
// Add classes
|
||||
for(const auto &c : classes()) {
|
||||
elements.emplace_back(c.get().context());
|
||||
}
|
||||
|
||||
// Add enums
|
||||
for(const auto &e : enums()) {
|
||||
elements.emplace_back(e.get().context());
|
||||
}
|
||||
|
||||
ctx["elements"] = elements;
|
||||
|
||||
return ctx;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace clanguml::common::model {
|
||||
|
||||
@@ -87,6 +87,8 @@ public:
|
||||
bool has_element(
|
||||
const clanguml::common::model::diagram_element::id_t id) const override;
|
||||
|
||||
inja::json context() const override;
|
||||
|
||||
private:
|
||||
common::reference_vector<class_> classes_;
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ public:
|
||||
enum_ &operator=(const enum_ &) = delete;
|
||||
enum_ &operator=(enum_ &&) = delete;
|
||||
|
||||
std::string type_name() const override { return "enum"; }
|
||||
|
||||
// TODO: Do we need this?
|
||||
friend bool operator==(const enum_ &l, const enum_ &r);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user