Class diagram MermaidJS generator. More...
Class diagram MermaidJS generator.
Definition at line 64 of file class_diagram_generator.h.
#include <class_diagram_generator.h>
Public Member Functions | |
generator (diagram_config &config, diagram_model &model) | |
void | generate_diagram (std::ostream &ostr) const override |
Main generator method. | |
void | generate_diagram_type (std::ostream &ostr) const override |
Generate the diagram type. | |
void | generate_top_level_elements (std::ostream &ostr) const |
In a nested diagram, generate the top level elements. | |
void | generate_alias (const common::model::element &e, std::ostream &ostr) const |
Generate MermaidJS alias for a class element. | |
void | generate (const class_ &c, std::ostream &ostr) const |
Render class element to MermaidJS. | |
void | generate_methods (const std::vector< class_method > &methods, std::ostream &ostr) const |
Render class methods to MermaidJS. | |
void | generate_methods (const method_groups_t &methods, std::ostream &ostr) const |
Render class methods to MermaidJS in groups. | |
void | generate_method (const class_method &m, std::ostream &ostr) const |
Render class method to MermaidJS. | |
void | generate_member (const class_member &m, std::ostream &ostr) const |
Render class member to MermaidJS. | |
void | generate_relationships (std::ostream &ostr) const |
Render all relationships in the diagram to MermaidJS. | |
void | generate_relationships (const class_ &c, std::ostream &ostr) const |
Render all relationships originating from class element. | |
void | generate_relationship (const relationship &r, std::set< std::string > &rendered_relations) const |
Render a specific relationship to MermaidJS. | |
void | generate (const enum_ &e, std::ostream &ostr) const |
Render enum element to MermaidJS. | |
void | generate_relationships (const enum_ &c, std::ostream &ostr) const |
Render all relationships originating from enum element. | |
void | generate (const concept_ &c, std::ostream &ostr) const |
Render concept element to MermaidJS. | |
void | generate_relationships (const concept_ &c, std::ostream &ostr) const |
Render all relationships originating from concept element. | |
void | generate (const package &p, std::ostream &ostr) const |
Render package element to MermaidJS. | |
void | generate_relationships (const package &p, std::ostream &ostr) const |
Render all relationships originating from package element. | |
void | generate_member_notes (std::ostream &ostream, const class_element &member, const std::string &alias) const |
Generate any notes attached specifically to some class element. | |
void | generate_groups (std::ostream &ostr) const |
Generate elements grouped together in together groups. | |
method_groups_t | group_methods (const std::vector< class_method > &methods) const |
Group class methods based on method type. | |
Public Member Functions inherited from clanguml::common::generators::mermaid::generator< ConfigType, DiagramType > | |
generator (ConfigType &config, DiagramType &model) | |
Constructor. | |
~generator () override=default | |
void | generate (std::ostream &ostr) const override |
Generate diagram. | |
virtual void | generate_diagram (std::ostream &ostr) const =0 |
Generate diagram specific part. | |
void | generate_mermaid_directives (std::ostream &ostr, const std::vector< std::string > &directives) const |
Generate MermaidJS directives from config file. | |
virtual void | generate_diagram_type (std::ostream &ostr) const =0 |
Generate the diagram type. | |
virtual void | generate_notes (std::ostream &ostr, const model::diagram_element &element) const |
Generate diagram notes. | |
void | generate_metadata (std::ostream &ostr) const |
Generate comment with diagram metadata. | |
void | generate_title (std::ostream &ostr) const |
Generate diagram title. | |
template<typename E > | |
void | generate_link (std::ostream &ostr, const E &e) const |
Generate hyper link to element. | |
void | print_debug (const common::model::source_location &e, std::ostream &ostr) const |
Print debug information in diagram comments. | |
Public Member Functions inherited from clanguml::common::generators::generator< ConfigType, DiagramType > | |
generator (ConfigType &config, DiagramType &model) | |
Constructor. | |
virtual | ~generator ()=default |
virtual void | generate (std::ostream &ostr) const =0 |
Generate diagram. | |
const ConfigType & | config () const |
Get reference to diagram config. | |
const DiagramType & | model () const |
Get reference to diagram model. | |
template<typename E > | |
inja::json | element_context (const E &e) const |
std::optional< std::pair< std::string, std::string > > | get_link_pattern (const common::model::source_location &sl) const |
std::optional< std::pair< std::string, std::string > > | get_tooltip_pattern (const common::model::source_location &sl) const |
void | init_context () |
Initialize diagram Jinja context. | |
void | update_context () const |
Update diagram Jinja context. | |
void | init_env () |
const inja::json & | context () const |
inja::Environment & | env () const |
Private Types | |
using | method_groups_t = std::map< std::string, std::vector< class_method > > |
Private Member Functions | |
template<typename T > | |
void | sort_class_elements (std::vector< T > &elements) const |
Private Attributes | |
const std::vector< std::string > | method_groups_ |
common::generators::nested_element_stack< common::model::element > | together_group_stack_ |
Additional Inherited Members | |
Protected Attributes inherited from clanguml::common::generators::mermaid::generator< ConfigType, DiagramType > | |
std::set< std::string > | m_generated_aliases |
Protected Attributes inherited from clanguml::common::generators::generator< ConfigType, DiagramType > | |
inja::json | m_context |
inja::Environment | m_env |
|
private |
Definition at line 65 of file class_diagram_generator.h.
clanguml::class_diagram::generators::mermaid::generator::generator | ( | diagram_config & | config, |
diagram_model & | model | ||
) |
Definition at line 32 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate | ( | const class_ & | c, |
std::ostream & | ostr | ||
) | const |
Render class element to MermaidJS.
c | Class element |
ostr | Output stream |
Definition at line 61 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate | ( | const concept_ & | c, |
std::ostream & | ostr | ||
) | const |
Render concept element to MermaidJS.
c | Concept element |
ostr | Output stream |
Definition at line 268 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate | ( | const enum_ & | e, |
std::ostream & | ostr | ||
) | const |
Render enum element to MermaidJS.
e | Enum element |
ostr | Output stream |
Definition at line 601 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate | ( | const package & | p, |
std::ostream & | ostr | ||
) | const |
Render package element to MermaidJS.
p | Package element |
ostr | Output stream |
Definition at line 622 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_alias | ( | const common::model::element & | e, |
std::ostream & | ostr | ||
) | const |
Generate MermaidJS alias for a class element.
c | Class element |
ostr | Output stream |
Definition at line 43 of file class_diagram_generator.cc.
|
overridevirtual |
Main generator method.
This method is called first and coordinates the entire diagram generation.
ostr | Output stream. |
Implements clanguml::common::generators::mermaid::generator< ConfigType, DiagramType >.
Definition at line 714 of file class_diagram_generator.cc.
|
overridevirtual |
Generate the diagram type.
ostr | Output stream |
Implements clanguml::common::generators::mermaid::generator< ConfigType, DiagramType >.
Definition at line 38 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_groups | ( | std::ostream & | ostr | ) | const |
Generate elements grouped together in together
groups.
ostr | Output stream |
Definition at line 769 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_member | ( | const class_member & | m, |
std::ostream & | ostr | ||
) | const |
Render class member to MermaidJS.
m | Class member |
ostr | Output stream |
Definition at line 254 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_member_notes | ( | std::ostream & | ostream, |
const class_element & | member, | ||
const std::string & | alias | ||
) | const |
Generate any notes attached specifically to some class element.
ostream | Output stream |
member | Class element (member or method) |
alias | MermaidJS class alias |
Definition at line 301 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_method | ( | const class_method & | m, |
std::ostream & | ostr | ||
) | const |
Render class method to MermaidJS.
m | Class method |
ostr | Output stream |
Definition at line 185 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_methods | ( | const method_groups_t & | methods, |
std::ostream & | ostr | ||
) | const |
Render class methods to MermaidJS in groups.
methods | Methods grouped by method type |
ostr | Output stream |
Definition at line 135 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_methods | ( | const std::vector< class_method > & | methods, |
std::ostream & | ostr | ||
) | const |
Render class methods to MermaidJS.
methods | List of class methods |
ostr | Output stream |
Definition at line 146 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_relationship | ( | const relationship & | r, |
std::set< std::string > & | rendered_relations | ||
) | const |
Render a specific relationship to MermaidJS.
r | Relationship model |
rendered_relations | Set of already rendered relationships, to ensure that there are no duplicate relationships |
Definition at line 331 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_relationships | ( | const class_ & | c, |
std::ostream & | ostr | ||
) | const |
Render all relationships originating from class element.
c | Class element |
ostr | Output stream |
Definition at line 368 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_relationships | ( | const concept_ & | c, |
std::ostream & | ostr | ||
) | const |
Render all relationships originating from concept element.
c | Concept element |
ostr | Output stream |
Definition at line 473 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_relationships | ( | const enum_ & | c, |
std::ostream & | ostr | ||
) | const |
Render all relationships originating from enum element.
c | Enum element |
ostr | Output stream |
Definition at line 555 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_relationships | ( | const package & | p, |
std::ostream & | ostr | ||
) | const |
Render all relationships originating from package element.
p | Package element |
ostr | Output stream |
Definition at line 681 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_relationships | ( | std::ostream & | ostr | ) | const |
Render all relationships in the diagram to MermaidJS.
ostr | Output stream |
Definition at line 313 of file class_diagram_generator.cc.
void clanguml::class_diagram::generators::mermaid::generator::generate_top_level_elements | ( | std::ostream & | ostr | ) | const |
In a nested diagram, generate the top level elements.
This method iterates over the top level elements. In case the diagram is nested (i.e. includes packages), for each package it recursively call generation of elements contained in each package.
parent | JSON node |
Definition at line 723 of file class_diagram_generator.cc.
generator::method_groups_t clanguml::class_diagram::generators::mermaid::generator::group_methods | ( | const std::vector< class_method > & | methods | ) | const |
Group class methods based on method type.
methods | List of class methods. |
Definition at line 158 of file class_diagram_generator.cc.
|
inlineprivate |
Definition at line 257 of file class_diagram_generator.h.
|
private |
Definition at line 253 of file class_diagram_generator.h.
|
mutableprivate |
Definition at line 268 of file class_diagram_generator.h.