drawio_dsl 0.5.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.templates/basic/drawio_extensions.rb +57 -0
  3. data/.builders/.templates/basic/schema_require.rb +3 -1
  4. data/.builders/blueprint/shapes.rb +3 -1
  5. data/.builders/generators/10-transform-drawio-js.rb +195 -0
  6. data/.builders/generators/20-drawio-extensions.rb +41 -0
  7. data/.builders/generators/project_plans/drawio_dsl.rb +15 -9
  8. data/.builders/generators/project_plans/k_doc.rb +39 -0
  9. data/.builders/generators/sample_diagrams/05-samples.rb +23 -0
  10. data/.builders/generators/sample_diagrams/15-grid-direction.rb +0 -8
  11. data/.builders/generators/sample_diagrams/20-styles.rb +1 -2
  12. data/.rubocop.yml +4 -1
  13. data/CHANGELOG.md +21 -0
  14. data/README.md +2 -0
  15. data/docs/extensions/analyti_cs.svg +3 -0
  16. data/docs/extensions/android_inputs.svg +3 -0
  17. data/docs/extensions/app_services.svg +3 -0
  18. data/docs/extensions/appliances.svg +3 -0
  19. data/docs/extensions/arrows.svg +3 -0
  20. data/docs/extensions/aws_17___analyti_cs.svg +3 -0
  21. data/docs/extensions/aws_17___application_services.svg +3 -0
  22. data/docs/extensions/aws_17___artificial_intelligence.svg +3 -0
  23. data/docs/extensions/aws_17___business_productivity.svg +3 -0
  24. data/docs/extensions/aws_17___compute.svg +3 -0
  25. data/docs/extensions/aws_17___contact_center.svg +3 -0
  26. data/docs/extensions/aws_17___containers.svg +3 -0
  27. data/docs/extensions/aws_17___database.svg +3 -0
  28. data/docs/extensions/aws_17___desktop_app_straning.svg +3 -0
  29. data/docs/extensions/aws_17___developer_tools.svg +3 -0
  30. data/docs/extensions/aws_17___game_development.svg +3 -0
  31. data/docs/extensions/aws_17___general.svg +3 -0
  32. data/docs/extensions/aws_17___io_t.svg +3 -0
  33. data/docs/extensions/aws_17___management.svg +3 -0
  34. data/docs/extensions/aws_17___messaging.svg +3 -0
  35. data/docs/extensions/aws_17___migration.svg +3 -0
  36. data/docs/extensions/aws_17___mobile_services.svg +3 -0
  37. data/docs/extensions/aws_17___networking_content_delivery.svg +3 -0
  38. data/docs/extensions/aws_17___on_demand_workforce.svg +3 -0
  39. data/docs/extensions/aws_17___sdks.svg +3 -0
  40. data/docs/extensions/aws_17___serurity_identity_and_compliance.svg +3 -0
  41. data/docs/extensions/aws_17___storage.svg +3 -0
  42. data/docs/extensions/aws_19___application_integration.svg +3 -0
  43. data/docs/extensions/aws_19___ar_vr.svg +3 -0
  44. data/docs/extensions/aws_19___blockchain.svg +3 -0
  45. data/docs/extensions/aws_19___business_applications.svg +3 -0
  46. data/docs/extensions/aws_19___compute.svg +3 -0
  47. data/docs/extensions/aws_19___cost_management.svg +3 -0
  48. data/docs/extensions/aws_19___customer_engagement.svg +3 -0
  49. data/docs/extensions/aws_19___database.svg +3 -0
  50. data/docs/extensions/aws_19___desktop_app_streaming.svg +3 -0
  51. data/docs/extensions/aws_19___developer_tools.svg +3 -0
  52. data/docs/extensions/aws_19___ec2_instance_types.svg +3 -0
  53. data/docs/extensions/aws_19___game_tech.svg +3 -0
  54. data/docs/extensions/aws_19___general.svg +3 -0
  55. data/docs/extensions/aws_19___groups_note_repeated_below_without_v2.svg +3 -0
  56. data/docs/extensions/aws_19___internet_of_things.svg +3 -0
  57. data/docs/extensions/aws_19___machine_learning.svg +3 -0
  58. data/docs/extensions/aws_19___management_governance.svg +3 -0
  59. data/docs/extensions/aws_19___media_services.svg +3 -0
  60. data/docs/extensions/aws_19___migration_transfer.svg +3 -0
  61. data/docs/extensions/aws_19___mobile.svg +3 -0
  62. data/docs/extensions/aws_19___networking_content_delivery.svg +3 -0
  63. data/docs/extensions/aws_19___roboti_cs.svg +3 -0
  64. data/docs/extensions/aws_19___satellite.svg +3 -0
  65. data/docs/extensions/aws_19___security_identity_compliance.svg +3 -0
  66. data/docs/extensions/aws_19___storage.svg +3 -0
  67. data/docs/extensions/aws_19_analyti_cs.svg +3 -0
  68. data/docs/extensions/aws_general.svg +3 -0
  69. data/docs/extensions/azure2019.svg +3 -0
  70. data/docs/extensions/azure_cloud.svg +3 -0
  71. data/docs/extensions/azure_enterprise.svg +3 -0
  72. data/docs/extensions/azure_vms.svg +3 -0
  73. data/docs/extensions/basic_network_shapes.svg +3 -0
  74. data/docs/extensions/beds.svg +3 -0
  75. data/docs/extensions/bpmn_2_0.svg +3 -0
  76. data/docs/extensions/cisco_basic.svg +3 -0
  77. data/docs/extensions/cisco_extended.svg +3 -0
  78. data/docs/extensions/common_elements.svg +3 -0
  79. data/docs/extensions/computers_and_monitors.svg +3 -0
  80. data/docs/extensions/containers.svg +3 -0
  81. data/docs/extensions/content_delivery.svg +3 -0
  82. data/docs/extensions/couches.svg +3 -0
  83. data/docs/extensions/cubicle_walls.svg +3 -0
  84. data/docs/extensions/data_flow.svg +3 -0
  85. data/docs/extensions/database.svg +3 -0
  86. data/docs/extensions/deployment.svg +3 -0
  87. data/docs/extensions/desks.svg +3 -0
  88. data/docs/extensions/detailed_network_diagrams.svg +3 -0
  89. data/docs/extensions/developer_tools.svg +3 -0
  90. data/docs/extensions/doors_windows.svg +3 -0
  91. data/docs/extensions/ec2.svg +3 -0
  92. data/docs/extensions/electrical.svg +3 -0
  93. data/docs/extensions/electroni_cs.svg +3 -0
  94. data/docs/extensions/enterprise_application.svg +3 -0
  95. data/docs/extensions/equipment.svg +3 -0
  96. data/docs/extensions/ext_shapes.svg +3 -0
  97. data/docs/extensions/flowchart.svg +3 -0
  98. data/docs/extensions/geometric_shapes.svg +3 -0
  99. data/docs/extensions/google_cloud_platform.svg +3 -0
  100. data/docs/extensions/heat_exchangers.svg +3 -0
  101. data/docs/extensions/i_os_6_i_pad_controls.svg +3 -0
  102. data/docs/extensions/i_os_6_i_pad_elements.svg +3 -0
  103. data/docs/extensions/i_os_6_i_pad_icons.svg +3 -0
  104. data/docs/extensions/i_os_6_i_phone_controls.svg +3 -0
  105. data/docs/extensions/i_os_6_i_phone_elements.svg +3 -0
  106. data/docs/extensions/i_os_6_i_phone_icons.svg +3 -0
  107. data/docs/extensions/i_os_devices.svg +3 -0
  108. data/docs/extensions/i_os_icons.svg +3 -0
  109. data/docs/extensions/i_os_mockups.svg +3 -0
  110. data/docs/extensions/i_os_ui_components.svg +3 -0
  111. data/docs/extensions/i_pad_elements.svg +3 -0
  112. data/docs/extensions/i_phone_elements.svg +3 -0
  113. data/docs/extensions/information.svg +3 -0
  114. data/docs/extensions/instruments.svg +3 -0
  115. data/docs/extensions/internet_of_things.svg +3 -0
  116. data/docs/extensions/kanban.svg +3 -0
  117. data/docs/extensions/kitchen.svg +3 -0
  118. data/docs/extensions/kubernetes_icons.svg +3 -0
  119. data/docs/extensions/logic_gates.svg +3 -0
  120. data/docs/extensions/materials.svg +3 -0
  121. data/docs/extensions/message_routing.svg +3 -0
  122. data/docs/extensions/message_transformation.svg +3 -0
  123. data/docs/extensions/messaging_channels.svg +3 -0
  124. data/docs/extensions/messaging_endpoints.svg +3 -0
  125. data/docs/extensions/messaging_systems.svg +3 -0
  126. data/docs/extensions/mind_map.svg +3 -0
  127. data/docs/extensions/misc.svg +3 -0
  128. data/docs/extensions/misc_floorplan.svg +3 -0
  129. data/docs/extensions/miscellaneous.svg +3 -0
  130. data/docs/extensions/mobile_services.svg +3 -0
  131. data/docs/extensions/network.svg +3 -0
  132. data/docs/extensions/networking.svg +3 -0
  133. data/docs/extensions/on_demand.svg +3 -0
  134. data/docs/extensions/piping.svg +3 -0
  135. data/docs/extensions/power_sources.svg +3 -0
  136. data/docs/extensions/processes.svg +3 -0
  137. data/docs/extensions/pumps.svg +3 -0
  138. data/docs/extensions/repeated_from_the_above.svg +3 -0
  139. data/docs/extensions/restroom.svg +3 -0
  140. data/docs/extensions/s3.svg +3 -0
  141. data/docs/extensions/sdks.svg +3 -0
  142. data/docs/extensions/security_identity.svg +3 -0
  143. data/docs/extensions/server_racks.svg +3 -0
  144. data/docs/extensions/shipments.svg +3 -0
  145. data/docs/extensions/site_map.svg +3 -0
  146. data/docs/extensions/stairs.svg +3 -0
  147. data/docs/extensions/standard.svg +3 -0
  148. data/docs/extensions/system_management.svg +3 -0
  149. data/docs/extensions/tables_chairs.svg +3 -0
  150. data/docs/extensions/technology.svg +3 -0
  151. data/docs/extensions/transistors.svg +3 -0
  152. data/docs/extensions/ui_containers.svg +3 -0
  153. data/docs/extensions/ui_input.svg +3 -0
  154. data/docs/extensions/ui_menus.svg +3 -0
  155. data/docs/extensions/ui_misc.svg +3 -0
  156. data/docs/extensions/ui_widgets.svg +3 -0
  157. data/docs/extensions/uml_class_diagram.svg +3 -0
  158. data/docs/extensions/uml_component.svg +3 -0
  159. data/docs/extensions/uml_entity_relationship.svg +3 -0
  160. data/docs/extensions/uml_sequence.svg +3 -0
  161. data/docs/extensions/uml_state_activity.svg +3 -0
  162. data/docs/extensions/uml_use_case.svg +3 -0
  163. data/docs/extensions/value_stream_mapping.svg +3 -0
  164. data/docs/extensions/valves.svg +3 -0
  165. data/docs/extensions/venn_gradient.svg +3 -0
  166. data/docs/extensions/venn_plain.svg +3 -0
  167. data/docs/extensions/vessels.svg +3 -0
  168. data/docs/extensions.md +614 -0
  169. data/docs/project_done.svg +1 -1
  170. data/docs/project_in_progress.svg +1 -1
  171. data/docs/project_todo.svg +1 -1
  172. data/docs/samples/grid-direction-horizontal.svg +1 -1
  173. data/docs/samples/grid-direction-vertical.svg +1 -1
  174. data/docs/samples/samples.svg +3 -0
  175. data/docs/samples/styles-glass.svg +1 -1
  176. data/docs/samples/styles-plain.svg +1 -1
  177. data/docs/samples/styles-rounded.svg +1 -1
  178. data/docs/samples/styles-shadow.svg +1 -1
  179. data/docs/samples/styles-sketch.svg +1 -1
  180. data/docs/samples/themes-random.svg +1 -1
  181. data/lib/drawio_dsl/dom_builder.rb +23 -8
  182. data/lib/drawio_dsl/drawio_extensions.json +14024 -0
  183. data/lib/drawio_dsl/drawio_extensions.rb +4599 -0
  184. data/lib/drawio_dsl/drawio_extensions_active.rb +32 -0
  185. data/lib/drawio_dsl/layout_engine.rb +17 -7
  186. data/lib/drawio_dsl/schema/_.rb +2 -0
  187. data/lib/drawio_dsl/schema/diagram.rb +1 -1
  188. data/lib/drawio_dsl/schema/layouts/flex_layout.rb +1 -2
  189. data/lib/drawio_dsl/schema/layouts/grid_layout.rb +1 -2
  190. data/lib/drawio_dsl/schema/layouts/layout.rb +0 -3
  191. data/lib/drawio_dsl/schema/node.rb +21 -2
  192. data/lib/drawio_dsl/schema/node_list.rb +20 -1
  193. data/lib/drawio_dsl/schema/page.rb +14 -3
  194. data/lib/drawio_dsl/schema/shapes/shape.rb +6 -4
  195. data/lib/drawio_dsl/schema/virtual/anchor.rb +26 -0
  196. data/lib/drawio_dsl/version.rb +1 -1
  197. data/lib/drawio_dsl/xml_builder.rb +4 -8
  198. data/lib/drawio_dsl.rb +2 -0
  199. data/package-lock.json +2 -2
  200. data/package.json +1 -1
  201. metadata +166 -2
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module DrawIoExtensionsActive
5
+ def apply_active_flags
6
+ sections.each do |section|
7
+ section[:shapes].each do |shape|
8
+ shape[:active] = check_if_active(shape)
9
+ end
10
+ section[:active] = section[:shapes].any? { |s| s[:active] }
11
+ end
12
+ end
13
+
14
+ def check_if_active(shape)
15
+ style = shape[:style]
16
+
17
+ ban = %w[
18
+ mxCompositeShape
19
+ strokeColor=none;fillColor=none
20
+ shape=image
21
+ shadow=1
22
+ shape=partialRectangle;right=0
23
+ shape=partialRectangle;right=0;left=0
24
+ ]
25
+
26
+ return false if style.empty?
27
+ return false if ban.include?(style)
28
+
29
+ true
30
+ end
31
+ end
32
+ end
@@ -23,13 +23,23 @@ module DrawioDsl
23
23
  page.position_y = page.margin_top
24
24
 
25
25
  page.nodes.all.each do |node|
26
- case node.classification
27
- when :layout_rule
28
- @current_layout = node
29
- when :shape
30
- current_layout&.position_shape(node)
31
- end
32
- # node.debug(format: :row)
26
+ traverse_node(node)
27
+ end
28
+ end
29
+
30
+ def traverse_node(node)
31
+ process_node(node)
32
+ node.nodes.all.each do |child|
33
+ traverse_node(child)
34
+ end
35
+ end
36
+
37
+ def process_node(node)
38
+ case node.classification
39
+ when :layout_rule
40
+ @current_layout = node
41
+ when :shape
42
+ current_layout&.position_shape(node)
33
43
  end
34
44
  end
35
45
  end
@@ -49,3 +49,5 @@ require_relative 'shapes/triangle'
49
49
  require_relative 'shapes/embed_row'
50
50
  require_relative 'shapes/embed_col50'
51
51
  require_relative 'shapes/embed_col200'
52
+
53
+ require_relative 'virtual/anchor'
@@ -49,7 +49,7 @@ module DrawioDsl
49
49
  theme: theme,
50
50
  palette: palette.to_h,
51
51
  style: style.to_h,
52
- pages: pages.map(&:to_h)
52
+ pages: pages.select(&:active?).map(&:to_h)
53
53
  }
54
54
  end
55
55
  end
@@ -10,13 +10,12 @@ module DrawioDsl
10
10
  attr_reader :perpendicular_max
11
11
 
12
12
  def initialize(page, **args)
13
- @type = :flex_layout
14
13
  @direction = args[:direction] || :horizontal
15
14
  @wrap_at = args[:wrap_at] || (direction == :horizontal ? 1000 : 800)
16
15
  @gap = args[:gap] || 20
17
16
  @perpendicular_max = 0
18
17
 
19
- super(page, **args)
18
+ super(page, **args.merge(type: :flex_layout))
20
19
  end
21
20
 
22
21
  def position_shape(shape)
@@ -15,7 +15,6 @@ module DrawioDsl
15
15
 
16
16
  # rubocop:disable Metrics/CyclomaticComplexity
17
17
  def initialize(page, **args)
18
- @type = :grid_layout
19
18
  @direction = args[:direction] || :horizontal
20
19
  @wrap_at = args[:wrap_at] || 5
21
20
  @grid_size = args[:grid_size] || 220
@@ -25,7 +24,7 @@ module DrawioDsl
25
24
  @v_align = args[:v_align] || :center
26
25
  @cell_no = 1
27
26
 
28
- super(page, **args)
27
+ super(page, **args.merge(type: :grid_layout))
29
28
  end
30
29
  # rubocop:enable Metrics/CyclomaticComplexity
31
30
 
@@ -4,8 +4,6 @@ module DrawioDsl
4
4
  module Schema
5
5
  # Provides base configuration for automatic layouts
6
6
  class Layout < Node
7
- attr_accessor :type
8
-
9
7
  # represents the x coordinate of the top left corner layout area
10
8
  # this coordinate is based on the current location of the page
11
9
  attr_accessor :anchor_x
@@ -31,7 +29,6 @@ module DrawioDsl
31
29
 
32
30
  def to_h
33
31
  super.merge(
34
- type: type,
35
32
  anchor_x: anchor_x,
36
33
  anchor_y: anchor_y
37
34
  )
@@ -7,19 +7,38 @@ module DrawioDsl
7
7
  class Node
8
8
  attr_accessor :id
9
9
  attr_accessor :page
10
+ attr_accessor :parent
10
11
  attr_accessor :classification
12
+ attr_accessor :type
13
+ attr_accessor :nodes
11
14
 
12
15
  def initialize(page, **args)
13
16
  @page = page
14
17
  @id = args[:id]
18
+ @parent = args[:parent]
15
19
  @classification = args[:classification] || :unknown
20
+ @type = args[:type] || :unknown
21
+ @nodes = NodeList.new
16
22
  end
17
23
 
18
24
  def to_h
19
- {
25
+ result = {
20
26
  id: id,
21
- classification: classification
27
+ parent_id: parent&.id,
28
+ classification: classification,
29
+ type: type
22
30
  }
31
+ result[:nodes] = nodes.to_h if nodes.any?
32
+ result
33
+ end
34
+
35
+ def root?
36
+ parent.nil? || parent.is_a?(DrawioDsl::Schema::Page)
37
+ end
38
+
39
+ def add_node(node)
40
+ @nodes.add(self, node)
41
+ node
23
42
  end
24
43
 
25
44
  # :nocov:
@@ -9,7 +9,8 @@ module DrawioDsl
9
9
  @nodes = []
10
10
  end
11
11
 
12
- def add(node)
12
+ def add(parent, node)
13
+ node.parent = parent
13
14
  @nodes << node
14
15
  end
15
16
 
@@ -29,6 +30,24 @@ module DrawioDsl
29
30
  @nodes.length
30
31
  end
31
32
 
33
+ def empty?
34
+ @nodes.empty?
35
+ end
36
+
37
+ def any?
38
+ @nodes.any?
39
+ end
40
+
41
+ def first
42
+ @nodes.first
43
+ end
44
+
45
+ def as_xml(xml)
46
+ nodes.each do |node|
47
+ node.as_xml(xml) if node.respond_to?(:as_xml)
48
+ end
49
+ end
50
+
32
51
  def to_h
33
52
  @nodes.map(&:to_h)
34
53
  end
@@ -11,6 +11,7 @@ module DrawioDsl
11
11
  attr_accessor :position_y
12
12
 
13
13
  attr_accessor :id
14
+ attr_accessor :active
14
15
  attr_reader :name
15
16
  attr_reader :theme
16
17
  attr_reader :style
@@ -39,6 +40,7 @@ module DrawioDsl
39
40
  @diagram = diagram
40
41
 
41
42
  @id = args[:id]
43
+ @active = args[:active].nil? ? true : !args[:active].nil?
42
44
  @name = args[:name]
43
45
  @theme = args[:theme] || diagram.theme
44
46
 
@@ -90,9 +92,18 @@ module DrawioDsl
90
92
  end
91
93
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
92
94
 
93
- # def shapes
94
- # nodes.shapes
95
- # end
95
+ def active?
96
+ !!@active
97
+ end
98
+
99
+ def add_node(node)
100
+ @nodes.add(self, node)
101
+ node
102
+ end
103
+
104
+ def as_xml(xml)
105
+ nodes.as_xml(xml)
106
+ end
96
107
 
97
108
  def to_h
98
109
  {
@@ -37,7 +37,6 @@ module DrawioDsl
37
37
  attr_accessor :font_color
38
38
  attr_accessor :gradient
39
39
 
40
- attr_accessor :type
41
40
  attr_accessor :text_only
42
41
  attr_accessor :x
43
42
  attr_accessor :y
@@ -85,7 +84,6 @@ module DrawioDsl
85
84
 
86
85
  def style
87
86
  key_values = []
88
- key_values << style_modifiers unless style_modifiers.empty?
89
87
  key_values << "whiteSpace=#{white_space}" if white_space
90
88
  key_values << "html=#{html}" if html
91
89
  key_values << "rounded=#{rounded}" if rounded
@@ -96,20 +94,22 @@ module DrawioDsl
96
94
  key_values << "strokeColor=#{stroke_color}" if stroke_color
97
95
  key_values << "fontColor=#{font_color}" if font_color
98
96
  key_values << "gradient=#{gradient}" if gradient
97
+ key_values << style_modifiers unless style_modifiers.empty?
99
98
 
100
99
  key_values.join(';')
101
100
  end
102
101
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
103
102
 
104
103
  def as_xml(xml)
105
- xml.mxCell(id: id, value: title, style: style, vertex: 1, parent: "#{page.id}-B") do
104
+ xml.mxCell(id: id, value: title, style: style, vertex: 1, parent: parent&.id) do
106
105
  xml.mxGeometry(x: x, y: y, width: w, height: h, as: 'geometry')
107
106
  end
108
107
  end
109
108
 
110
109
  def to_h
111
- {
110
+ result = {
112
111
  id: id,
112
+ parent_id: parent&.id,
113
113
  classification: classification,
114
114
  type: type,
115
115
  x: x,
@@ -118,6 +118,8 @@ module DrawioDsl
118
118
  h: h,
119
119
  style: style
120
120
  }
121
+ result[:nodes] = nodes.to_h if nodes.any?
122
+ result
121
123
  end
122
124
 
123
125
  # :nocov:
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ # Provides an anchor point on the page for elements to hang from
6
+ class Anchor < Node
7
+ def initialize(page, **args)
8
+ args[:classification] = :anchor
9
+ super(page, **args)
10
+ end
11
+
12
+ # xml.mxCell(id: "#{page.id}-A")
13
+ # xml.mxCell(id: "#{page.id}-B", parent: "#{page.id}-A")
14
+
15
+ def as_xml(xml)
16
+ if parent
17
+ xml.mxCell(id: id, parent: parent.id)
18
+ else
19
+ xml.mxCell(id: id)
20
+ end
21
+
22
+ nodes.as_xml(xml)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DrawioDsl
4
- VERSION = '0.5.5'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -22,13 +22,13 @@ module DrawioDsl
22
22
 
23
23
  def build_diagram(xml)
24
24
  xml.mxfile(host: diagram.host) do
25
- diagram.pages.each do |page|
25
+ diagram.pages.select(&:active?).each do |page|
26
26
  build_page(xml, page)
27
27
  end
28
28
  end
29
29
  end
30
30
 
31
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength
31
+ # rubocop:disable Metrics/AbcSize
32
32
  def build_page(xml, page)
33
33
  xml.diagram(id: page.id, name: page.name) do
34
34
  xml.mxGraphModel(
@@ -50,15 +50,11 @@ module DrawioDsl
50
50
  shadow: page.page_shadow
51
51
  ) do
52
52
  xml.root do
53
- xml.mxCell(id: "#{page.id}-A")
54
- xml.mxCell(id: "#{page.id}-B", parent: "#{page.id}-A")
55
- page.nodes.all.each do |node|
56
- node.as_xml(xml) if node.classification == :shape
57
- end
53
+ page.as_xml(xml)
58
54
  end
59
55
  end
60
56
  end
61
57
  end
62
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength
58
+ # rubocop:enable Metrics/AbcSize
63
59
  end
64
60
  end
data/lib/drawio_dsl.rb CHANGED
@@ -18,6 +18,8 @@ require_relative 'drawio_dsl/dom_builder'
18
18
  require_relative 'drawio_dsl/xml_builder'
19
19
  require_relative 'drawio_dsl/layout_engine'
20
20
  require_relative 'drawio_dsl/drawio_shapes'
21
+ require_relative 'drawio_dsl/drawio_extensions_active'
22
+ require_relative 'drawio_dsl/drawio_extensions'
21
23
  require_relative 'drawio_dsl/drawio'
22
24
 
23
25
  module DrawioDsl
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "drawio_dsl",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "drawio_dsl",
9
- "version": "0.5.5",
9
+ "version": "0.6.0",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drawio_dsl",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "description": "DrawIO DSL can build DrawIO diagrams using a Domain Specific Language",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drawio_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-08 00:00:00.000000000 Z
11
+ date: 2022-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -76,6 +76,7 @@ files:
76
76
  - ".builders/.data/shapes.json"
77
77
  - ".builders/.templates/basic/configuration_shapes.rb"
78
78
  - ".builders/.templates/basic/dom_builder_shapes.rb"
79
+ - ".builders/.templates/basic/drawio_extensions.rb"
79
80
  - ".builders/.templates/basic/drawio_shapes.rb"
80
81
  - ".builders/.templates/basic/schema_require.rb"
81
82
  - ".builders/.templates/basic/schema_shape.rb"
@@ -85,7 +86,11 @@ files:
85
86
  - ".builders/boot.rb"
86
87
  - ".builders/generators/01-bootstrap.rb"
87
88
  - ".builders/generators/02-generate-app.rb"
89
+ - ".builders/generators/10-transform-drawio-js.rb"
90
+ - ".builders/generators/20-drawio-extensions.rb"
88
91
  - ".builders/generators/project_plans/drawio_dsl.rb"
92
+ - ".builders/generators/project_plans/k_doc.rb"
93
+ - ".builders/generators/sample_diagrams/05-samples.rb"
89
94
  - ".builders/generators/sample_diagrams/10-page-margin.rb"
90
95
  - ".builders/generators/sample_diagrams/15-grid-direction.rb"
91
96
  - ".builders/generators/sample_diagrams/16-grid-alignment.rb"
@@ -105,6 +110,160 @@ files:
105
110
  - Rakefile
106
111
  - bin/console
107
112
  - bin/setup
113
+ - docs/extensions.md
114
+ - docs/extensions/analyti_cs.svg
115
+ - docs/extensions/android_inputs.svg
116
+ - docs/extensions/app_services.svg
117
+ - docs/extensions/appliances.svg
118
+ - docs/extensions/arrows.svg
119
+ - docs/extensions/aws_17___analyti_cs.svg
120
+ - docs/extensions/aws_17___application_services.svg
121
+ - docs/extensions/aws_17___artificial_intelligence.svg
122
+ - docs/extensions/aws_17___business_productivity.svg
123
+ - docs/extensions/aws_17___compute.svg
124
+ - docs/extensions/aws_17___contact_center.svg
125
+ - docs/extensions/aws_17___containers.svg
126
+ - docs/extensions/aws_17___database.svg
127
+ - docs/extensions/aws_17___desktop_app_straning.svg
128
+ - docs/extensions/aws_17___developer_tools.svg
129
+ - docs/extensions/aws_17___game_development.svg
130
+ - docs/extensions/aws_17___general.svg
131
+ - docs/extensions/aws_17___io_t.svg
132
+ - docs/extensions/aws_17___management.svg
133
+ - docs/extensions/aws_17___messaging.svg
134
+ - docs/extensions/aws_17___migration.svg
135
+ - docs/extensions/aws_17___mobile_services.svg
136
+ - docs/extensions/aws_17___networking_content_delivery.svg
137
+ - docs/extensions/aws_17___on_demand_workforce.svg
138
+ - docs/extensions/aws_17___sdks.svg
139
+ - docs/extensions/aws_17___serurity_identity_and_compliance.svg
140
+ - docs/extensions/aws_17___storage.svg
141
+ - docs/extensions/aws_19___application_integration.svg
142
+ - docs/extensions/aws_19___ar_vr.svg
143
+ - docs/extensions/aws_19___blockchain.svg
144
+ - docs/extensions/aws_19___business_applications.svg
145
+ - docs/extensions/aws_19___compute.svg
146
+ - docs/extensions/aws_19___cost_management.svg
147
+ - docs/extensions/aws_19___customer_engagement.svg
148
+ - docs/extensions/aws_19___database.svg
149
+ - docs/extensions/aws_19___desktop_app_streaming.svg
150
+ - docs/extensions/aws_19___developer_tools.svg
151
+ - docs/extensions/aws_19___ec2_instance_types.svg
152
+ - docs/extensions/aws_19___game_tech.svg
153
+ - docs/extensions/aws_19___general.svg
154
+ - docs/extensions/aws_19___groups_note_repeated_below_without_v2.svg
155
+ - docs/extensions/aws_19___internet_of_things.svg
156
+ - docs/extensions/aws_19___machine_learning.svg
157
+ - docs/extensions/aws_19___management_governance.svg
158
+ - docs/extensions/aws_19___media_services.svg
159
+ - docs/extensions/aws_19___migration_transfer.svg
160
+ - docs/extensions/aws_19___mobile.svg
161
+ - docs/extensions/aws_19___networking_content_delivery.svg
162
+ - docs/extensions/aws_19___roboti_cs.svg
163
+ - docs/extensions/aws_19___satellite.svg
164
+ - docs/extensions/aws_19___security_identity_compliance.svg
165
+ - docs/extensions/aws_19___storage.svg
166
+ - docs/extensions/aws_19_analyti_cs.svg
167
+ - docs/extensions/aws_general.svg
168
+ - docs/extensions/azure2019.svg
169
+ - docs/extensions/azure_cloud.svg
170
+ - docs/extensions/azure_enterprise.svg
171
+ - docs/extensions/azure_vms.svg
172
+ - docs/extensions/basic_network_shapes.svg
173
+ - docs/extensions/beds.svg
174
+ - docs/extensions/bpmn_2_0.svg
175
+ - docs/extensions/cisco_basic.svg
176
+ - docs/extensions/cisco_extended.svg
177
+ - docs/extensions/common_elements.svg
178
+ - docs/extensions/computers_and_monitors.svg
179
+ - docs/extensions/containers.svg
180
+ - docs/extensions/content_delivery.svg
181
+ - docs/extensions/couches.svg
182
+ - docs/extensions/cubicle_walls.svg
183
+ - docs/extensions/data_flow.svg
184
+ - docs/extensions/database.svg
185
+ - docs/extensions/deployment.svg
186
+ - docs/extensions/desks.svg
187
+ - docs/extensions/detailed_network_diagrams.svg
188
+ - docs/extensions/developer_tools.svg
189
+ - docs/extensions/doors_windows.svg
190
+ - docs/extensions/ec2.svg
191
+ - docs/extensions/electrical.svg
192
+ - docs/extensions/electroni_cs.svg
193
+ - docs/extensions/enterprise_application.svg
194
+ - docs/extensions/equipment.svg
195
+ - docs/extensions/ext_shapes.svg
196
+ - docs/extensions/flowchart.svg
197
+ - docs/extensions/geometric_shapes.svg
198
+ - docs/extensions/google_cloud_platform.svg
199
+ - docs/extensions/heat_exchangers.svg
200
+ - docs/extensions/i_os_6_i_pad_controls.svg
201
+ - docs/extensions/i_os_6_i_pad_elements.svg
202
+ - docs/extensions/i_os_6_i_pad_icons.svg
203
+ - docs/extensions/i_os_6_i_phone_controls.svg
204
+ - docs/extensions/i_os_6_i_phone_elements.svg
205
+ - docs/extensions/i_os_6_i_phone_icons.svg
206
+ - docs/extensions/i_os_devices.svg
207
+ - docs/extensions/i_os_icons.svg
208
+ - docs/extensions/i_os_mockups.svg
209
+ - docs/extensions/i_os_ui_components.svg
210
+ - docs/extensions/i_pad_elements.svg
211
+ - docs/extensions/i_phone_elements.svg
212
+ - docs/extensions/information.svg
213
+ - docs/extensions/instruments.svg
214
+ - docs/extensions/internet_of_things.svg
215
+ - docs/extensions/kanban.svg
216
+ - docs/extensions/kitchen.svg
217
+ - docs/extensions/kubernetes_icons.svg
218
+ - docs/extensions/logic_gates.svg
219
+ - docs/extensions/materials.svg
220
+ - docs/extensions/message_routing.svg
221
+ - docs/extensions/message_transformation.svg
222
+ - docs/extensions/messaging_channels.svg
223
+ - docs/extensions/messaging_endpoints.svg
224
+ - docs/extensions/messaging_systems.svg
225
+ - docs/extensions/mind_map.svg
226
+ - docs/extensions/misc.svg
227
+ - docs/extensions/misc_floorplan.svg
228
+ - docs/extensions/miscellaneous.svg
229
+ - docs/extensions/mobile_services.svg
230
+ - docs/extensions/network.svg
231
+ - docs/extensions/networking.svg
232
+ - docs/extensions/on_demand.svg
233
+ - docs/extensions/piping.svg
234
+ - docs/extensions/power_sources.svg
235
+ - docs/extensions/processes.svg
236
+ - docs/extensions/pumps.svg
237
+ - docs/extensions/repeated_from_the_above.svg
238
+ - docs/extensions/restroom.svg
239
+ - docs/extensions/s3.svg
240
+ - docs/extensions/sdks.svg
241
+ - docs/extensions/security_identity.svg
242
+ - docs/extensions/server_racks.svg
243
+ - docs/extensions/shipments.svg
244
+ - docs/extensions/site_map.svg
245
+ - docs/extensions/stairs.svg
246
+ - docs/extensions/standard.svg
247
+ - docs/extensions/system_management.svg
248
+ - docs/extensions/tables_chairs.svg
249
+ - docs/extensions/technology.svg
250
+ - docs/extensions/transistors.svg
251
+ - docs/extensions/ui_containers.svg
252
+ - docs/extensions/ui_input.svg
253
+ - docs/extensions/ui_menus.svg
254
+ - docs/extensions/ui_misc.svg
255
+ - docs/extensions/ui_widgets.svg
256
+ - docs/extensions/uml_class_diagram.svg
257
+ - docs/extensions/uml_component.svg
258
+ - docs/extensions/uml_entity_relationship.svg
259
+ - docs/extensions/uml_sequence.svg
260
+ - docs/extensions/uml_state_activity.svg
261
+ - docs/extensions/uml_use_case.svg
262
+ - docs/extensions/value_stream_mapping.svg
263
+ - docs/extensions/valves.svg
264
+ - docs/extensions/venn_gradient.svg
265
+ - docs/extensions/venn_plain.svg
266
+ - docs/extensions/vessels.svg
108
267
  - docs/project-plan.md
109
268
  - docs/project_done.svg
110
269
  - docs/project_in_progress.svg
@@ -114,6 +273,7 @@ files:
114
273
  - docs/samples/grid-direction-horizontal.svg
115
274
  - docs/samples/grid-direction-vertical.svg
116
275
  - docs/samples/samples.md
276
+ - docs/samples/samples.svg
117
277
  - docs/samples/styles-glass.svg
118
278
  - docs/samples/styles-plain.svg
119
279
  - docs/samples/styles-rounded.svg
@@ -131,6 +291,9 @@ files:
131
291
  - lib/drawio_dsl/dom_builder.rb
132
292
  - lib/drawio_dsl/dom_builder_shapes.rb
133
293
  - lib/drawio_dsl/drawio.rb
294
+ - lib/drawio_dsl/drawio_extensions.json
295
+ - lib/drawio_dsl/drawio_extensions.rb
296
+ - lib/drawio_dsl/drawio_extensions_active.rb
134
297
  - lib/drawio_dsl/drawio_shapes.rb
135
298
  - lib/drawio_dsl/layout_engine.rb
136
299
  - lib/drawio_dsl/schema/_.rb
@@ -181,6 +344,7 @@ files:
181
344
  - lib/drawio_dsl/schema/shapes/step.rb
182
345
  - lib/drawio_dsl/schema/shapes/tick.rb
183
346
  - lib/drawio_dsl/schema/shapes/triangle.rb
347
+ - lib/drawio_dsl/schema/virtual/anchor.rb
184
348
  - lib/drawio_dsl/version.rb
185
349
  - lib/drawio_dsl/xml_builder.rb
186
350
  - package-lock.json