Class: Docker2plantuml::PlantUMLWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/docker2plantuml/writer.rb

Constant Summary collapse

I =
'  '
II =
'    '
III =
'      '

Instance Method Summary collapse

Constructor Details

#initialize(container_list) ⇒ PlantUMLWriter

Returns a new instance of PlantUMLWriter.



9
10
11
# File 'lib/docker2plantuml/writer.rb', line 9

def initialize(container_list)
  @container_list = container_list
end

Instance Method Details

#container_to_plant_uml(container) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/docker2plantuml/writer.rb', line 40

def container_to_plant_uml(container)
  container_name = container.container_name
  ports = ports_to_plant_uml(container)
  [
    I + "cloud [#{container.network_setting.network_name}\\n\\n]{",
    II + "node [#{container_name}\\n]{",
    ports.empty? ? III + '[ ]' : ports,
    II + '}',
    I + '}'
  ].join("\n")
end

#containers_to_plant_umlObject



34
35
36
37
38
# File 'lib/docker2plantuml/writer.rb', line 34

def containers_to_plant_uml
  @container_list
    .map { |c| container_to_plant_uml(c) }
    .join("\n")
end

#host_ports_to_plant_umlObject



25
26
27
28
29
30
31
32
# File 'lib/docker2plantuml/writer.rb', line 25

def host_ports_to_plant_uml
  @container_list
    .map(&:server_port_list)
    .reject(&:empty?)
    .inject([]) { |list, item| list + item }
    .map { |p| I + "[#{p}]" }
    .join("\n")
end

#port_mapping(c_name, p_info) ⇒ Object



78
79
80
# File 'lib/docker2plantuml/writer.rb', line 78

def port_mapping(c_name, p_info)
  "[#{c_name}:#{p_info.container_port}] -- [#{p_info.host_port}]"
end

#port_mapping_to_plant_uml(container) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/docker2plantuml/writer.rb', line 67

def port_mapping_to_plant_uml(container)
  container_name = container.container_name
  return '' if container.port_info_list.empty?

  container
    .port_info_list
    .select(&:host_port)
    .map { |p| I + port_mapping(container_name, p) }
    .join("\n")
end

#port_mappings_to_plant_umlObject



60
61
62
63
64
65
# File 'lib/docker2plantuml/writer.rb', line 60

def port_mappings_to_plant_uml
  @container_list
    .map { |c| port_mapping_to_plant_uml(c) }
    .reject(&:empty?)
    .join("\n")
end

#ports_to_plant_uml(container) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/docker2plantuml/writer.rb', line 52

def ports_to_plant_uml(container)
  container_name = container.container_name
  container
    .port_info_list
    .map { |p| III + "[#{container_name}:#{p.container_port}]" }
    .join("\n")
end

#to_plant_umlObject



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/docker2plantuml/writer.rb', line 13

def to_plant_uml
  [
    '@startuml',
    'folder DockerHost {',
    host_ports_to_plant_uml,
    containers_to_plant_uml,
    port_mappings_to_plant_uml,
    '}',
    '@enduml'
  ].join("\n")
end