Class: Opencdd::Exporters::Mermaid
- Defined in:
- lib/opencdd/exporters/mermaid.rb
Instance Attribute Summary collapse
-
#lines ⇒ Object
readonly
Returns the value of attribute lines.
Attributes inherited from Visitor
Instance Method Summary collapse
-
#initialize ⇒ Mermaid
constructor
A new instance of Mermaid.
- #to_diagram(database) ⇒ Object
- #visit_class(klass) ⇒ Object
Methods inherited from Visitor
#each_sorted, #reset!, #visit_classes, #visit_database, #visit_properties, #visit_property, #visit_relation, #visit_relations, #visit_unit, #visit_units, #visit_value_list, #visit_value_lists, #visit_value_term, #visit_value_terms, #visit_view_control, #visit_view_controls
Constructor Details
#initialize ⇒ Mermaid
Returns a new instance of Mermaid.
8 9 10 11 |
# File 'lib/opencdd/exporters/mermaid.rb', line 8 def initialize super @lines = ["classDiagram"] end |
Instance Attribute Details
#lines ⇒ Object (readonly)
Returns the value of attribute lines.
6 7 8 |
# File 'lib/opencdd/exporters/mermaid.rb', line 6 def lines @lines end |
Instance Method Details
#to_diagram(database) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/opencdd/exporters/mermaid.rb', line 13 def to_diagram(database) reset! @lines = ["classDiagram"] visit_classes(database) @lines.uniq.join("\n") end |
#visit_class(klass) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/opencdd/exporters/mermaid.rb', line 20 def visit_class(klass) emit_class_block(klass) parent_ref = klass.parent_irdi || klass.superclass_irdi if parent_ref parent = klass.database&.find(parent_ref) if parent safe = mermaid_id(parent) child = mermaid_id(klass) @lines << " #{safe} <|-- #{child}" end end klass.is_case_of_irdis.each do |ref| target = klass.database&.find(ref) next unless target @lines << " #{mermaid_id(target)} <.. #{mermaid_id(klass)} : is_case_of" end super end |