Class: Mxrb::Uml::ClassDiagram

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/uml/class_diagram.rb

Overview

Projects Mendix domain models as Mermaid and PlantUML class diagrams. rubocop:disable Metrics/AbcSize

Constant Summary collapse

TYPES =
{
  string: 'String', integer: 'Integer', long: 'Long', float: 'Float',
  decimal: 'Decimal', boolean: 'Boolean', datetime: 'DateTime',
  autonumber: 'AutoNumber', hashstring: 'HashedString', binary: 'Binary',
  enum: 'Enumeration'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(modules) ⇒ ClassDiagram

Returns a new instance of ClassDiagram.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mxrb/uml/class_diagram.rb', line 17

def initialize(modules)
  @modules = Array(modules)
  @entities = @modules.flat_map(&:entities)
  @module_by_entity = @modules.each_with_object({}) do |mod, result|
    mod.entities.each { result[_1.id.to_s] = mod.name.to_s }
  end
  @entity_by_key = @entities.each_with_object({}) do |entity, result|
    qualified = qualified_name(entity)
    result[entity.id.to_s] = entity
    result[qualified] = entity
  end
end

Instance Method Details

#to_mermaidObject



30
31
32
33
34
35
# File 'lib/mxrb/uml/class_diagram.rb', line 30

def to_mermaid
  lines = ['classDiagram']
  @entities.each { append_mermaid_class(lines, _1) }
  associations.each { lines << mermaid_association(_1) }
  "#{lines.join("\n")}\n"
end

#to_plantumlObject



37
38
39
40
41
42
43
# File 'lib/mxrb/uml/class_diagram.rb', line 37

def to_plantuml
  lines = ['@startuml', 'hide empty methods']
  @entities.each { append_plantuml_class(lines, _1) }
  associations.each { lines << plantuml_association(_1) }
  lines << '@enduml'
  "#{lines.join("\n")}\n"
end