drawio_dsl 0.5.7 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.data/shapes.json +49 -22
  3. data/.builders/.templates/basic/dom_builder_shapes.rb +2 -2
  4. data/.builders/.templates/basic/drawio_extensions.rb +57 -0
  5. data/.builders/.templates/basic/drawio_shapes.rb +2 -2
  6. data/.builders/blueprint/shapes.rb +10 -5
  7. data/.builders/generators/10-transform-drawio-js.rb +195 -0
  8. data/.builders/generators/20-drawio-extensions.rb +41 -0
  9. data/.builders/generators/project_plans/drawio_dsl.rb +30 -21
  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/.builders/generators/sample_diagrams/30-html-shapes.rb +48 -0
  13. data/.rubocop.yml +1 -0
  14. data/CHANGELOG.md +28 -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/html-shapes.svg +3 -0
  175. data/docs/samples/samples.md +4 -0
  176. data/docs/samples/samples.svg +1 -1
  177. data/docs/samples/styles-glass.svg +1 -1
  178. data/docs/samples/styles-plain.svg +1 -1
  179. data/docs/samples/styles-rounded.svg +1 -1
  180. data/docs/samples/styles-shadow.svg +1 -1
  181. data/docs/samples/styles-sketch.svg +1 -1
  182. data/docs/samples/themes-random.svg +1 -1
  183. data/lib/drawio_dsl/configuration_shapes.rb +14 -8
  184. data/lib/drawio_dsl/dom_builder.rb +23 -8
  185. data/lib/drawio_dsl/dom_builder_shapes.rb +97 -82
  186. data/lib/drawio_dsl/drawio_extensions.json +14024 -0
  187. data/lib/drawio_dsl/drawio_extensions.rb +4599 -0
  188. data/lib/drawio_dsl/drawio_extensions_active.rb +32 -0
  189. data/lib/drawio_dsl/drawio_shapes.rb +114 -96
  190. data/lib/drawio_dsl/formatters/_.rb +8 -0
  191. data/lib/drawio_dsl/formatters/base_formatter.rb +24 -0
  192. data/lib/drawio_dsl/formatters/factory.rb +33 -0
  193. data/lib/drawio_dsl/formatters/html_builder.rb +84 -0
  194. data/lib/drawio_dsl/formatters/interface_formatter.rb +53 -0
  195. data/lib/drawio_dsl/formatters/klass_formatter.rb +52 -0
  196. data/lib/drawio_dsl/formatters/style_builder.rb +63 -0
  197. data/lib/drawio_dsl/layout_engine.rb +17 -7
  198. data/lib/drawio_dsl/schema/_.rb +7 -4
  199. data/lib/drawio_dsl/schema/diagram.rb +1 -1
  200. data/lib/drawio_dsl/schema/layouts/flex_layout.rb +1 -2
  201. data/lib/drawio_dsl/schema/layouts/grid_layout.rb +1 -2
  202. data/lib/drawio_dsl/schema/layouts/layout.rb +0 -3
  203. data/lib/drawio_dsl/schema/node.rb +16 -3
  204. data/lib/drawio_dsl/schema/node_list.rb +20 -1
  205. data/lib/drawio_dsl/schema/page.rb +14 -7
  206. data/lib/drawio_dsl/schema/shapes/interface.rb +9 -0
  207. data/lib/drawio_dsl/schema/shapes/klass.rb +9 -0
  208. data/lib/drawio_dsl/schema/shapes/shape.rb +25 -11
  209. data/lib/drawio_dsl/schema/shapes/todo.rb +9 -0
  210. data/lib/drawio_dsl/schema/virtual/anchor.rb +2 -0
  211. data/lib/drawio_dsl/version.rb +1 -1
  212. data/lib/drawio_dsl/xml_builder.rb +4 -9
  213. data/lib/drawio_dsl.rb +3 -0
  214. data/package-lock.json +2 -2
  215. data/package.json +1 -1
  216. metadata +174 -2
@@ -4,188 +4,203 @@
4
4
  module DrawioDsl
5
5
  # DrawioDsl is a DSL for draw-io diagrams.
6
6
  module DomBuilderShapes
7
- def add_h1(**opts)
8
- h1 = DrawioDsl::Schema::H1.new(current_page, **opts)
7
+ def add_h1(**opts, &block)
8
+ h1 = DrawioDsl::Schema::H1.new(current_page, **opts, &block)
9
9
  add_shape(h1)
10
10
  end
11
11
 
12
- def add_h2(**opts)
13
- h2 = DrawioDsl::Schema::H2.new(current_page, **opts)
12
+ def add_h2(**opts, &block)
13
+ h2 = DrawioDsl::Schema::H2.new(current_page, **opts, &block)
14
14
  add_shape(h2)
15
15
  end
16
16
 
17
- def add_h3(**opts)
18
- h3 = DrawioDsl::Schema::H3.new(current_page, **opts)
17
+ def add_h3(**opts, &block)
18
+ h3 = DrawioDsl::Schema::H3.new(current_page, **opts, &block)
19
19
  add_shape(h3)
20
20
  end
21
21
 
22
- def add_h4(**opts)
23
- h4 = DrawioDsl::Schema::H4.new(current_page, **opts)
22
+ def add_h4(**opts, &block)
23
+ h4 = DrawioDsl::Schema::H4.new(current_page, **opts, &block)
24
24
  add_shape(h4)
25
25
  end
26
26
 
27
- def add_h5(**opts)
28
- h5 = DrawioDsl::Schema::H5.new(current_page, **opts)
27
+ def add_h5(**opts, &block)
28
+ h5 = DrawioDsl::Schema::H5.new(current_page, **opts, &block)
29
29
  add_shape(h5)
30
30
  end
31
31
 
32
- def add_h6(**opts)
33
- h6 = DrawioDsl::Schema::H6.new(current_page, **opts)
32
+ def add_h6(**opts, &block)
33
+ h6 = DrawioDsl::Schema::H6.new(current_page, **opts, &block)
34
34
  add_shape(h6)
35
35
  end
36
36
 
37
- def add_p(**opts)
38
- p = DrawioDsl::Schema::P.new(current_page, **opts)
37
+ def add_p(**opts, &block)
38
+ p = DrawioDsl::Schema::P.new(current_page, **opts, &block)
39
39
  add_shape(p)
40
40
  end
41
41
 
42
- def add_actor(**opts)
43
- actor = DrawioDsl::Schema::Actor.new(current_page, **opts)
42
+ def add_actor(**opts, &block)
43
+ actor = DrawioDsl::Schema::Actor.new(current_page, **opts, &block)
44
44
  add_shape(actor)
45
45
  end
46
46
 
47
- def add_actor2(**opts)
48
- actor2 = DrawioDsl::Schema::Actor2.new(current_page, **opts)
47
+ def add_actor2(**opts, &block)
48
+ actor2 = DrawioDsl::Schema::Actor2.new(current_page, **opts, &block)
49
49
  add_shape(actor2)
50
50
  end
51
51
 
52
- def add_callout(**opts)
53
- callout = DrawioDsl::Schema::Callout.new(current_page, **opts)
52
+ def add_callout(**opts, &block)
53
+ callout = DrawioDsl::Schema::Callout.new(current_page, **opts, &block)
54
54
  add_shape(callout)
55
55
  end
56
56
 
57
- def add_callout2(**opts)
58
- callout2 = DrawioDsl::Schema::Callout2.new(current_page, **opts)
57
+ def add_callout2(**opts, &block)
58
+ callout2 = DrawioDsl::Schema::Callout2.new(current_page, **opts, &block)
59
59
  add_shape(callout2)
60
60
  end
61
61
 
62
- def add_callout3(**opts)
63
- callout3 = DrawioDsl::Schema::Callout3.new(current_page, **opts)
62
+ def add_callout3(**opts, &block)
63
+ callout3 = DrawioDsl::Schema::Callout3.new(current_page, **opts, &block)
64
64
  add_shape(callout3)
65
65
  end
66
66
 
67
- def add_callout4(**opts)
68
- callout4 = DrawioDsl::Schema::Callout4.new(current_page, **opts)
67
+ def add_callout4(**opts, &block)
68
+ callout4 = DrawioDsl::Schema::Callout4.new(current_page, **opts, &block)
69
69
  add_shape(callout4)
70
70
  end
71
71
 
72
- def add_circle(**opts)
73
- circle = DrawioDsl::Schema::Circle.new(current_page, **opts)
72
+ def add_circle(**opts, &block)
73
+ circle = DrawioDsl::Schema::Circle.new(current_page, **opts, &block)
74
74
  add_shape(circle)
75
75
  end
76
76
 
77
- def add_cloud(**opts)
78
- cloud = DrawioDsl::Schema::Cloud.new(current_page, **opts)
77
+ def add_cloud(**opts, &block)
78
+ cloud = DrawioDsl::Schema::Cloud.new(current_page, **opts, &block)
79
79
  add_shape(cloud)
80
80
  end
81
81
 
82
- def add_cross(**opts)
83
- cross = DrawioDsl::Schema::Cross.new(current_page, **opts)
82
+ def add_container(**opts, &block)
83
+ container = DrawioDsl::Schema::Container.new(current_page, **opts, &block)
84
+ add_shape(container)
85
+ end
86
+
87
+ def add_container2(**opts, &block)
88
+ container2 = DrawioDsl::Schema::Container2.new(current_page, **opts, &block)
89
+ add_shape(container2)
90
+ end
91
+
92
+ def add_container3(**opts, &block)
93
+ container3 = DrawioDsl::Schema::Container3.new(current_page, **opts, &block)
94
+ add_shape(container3)
95
+ end
96
+
97
+ def add_container4(**opts, &block)
98
+ container4 = DrawioDsl::Schema::Container4.new(current_page, **opts, &block)
99
+ add_shape(container4)
100
+ end
101
+
102
+ def add_cross(**opts, &block)
103
+ cross = DrawioDsl::Schema::Cross.new(current_page, **opts, &block)
84
104
  add_shape(cross)
85
105
  end
86
106
 
87
- def add_envelop(**opts)
88
- envelop = DrawioDsl::Schema::Envelop.new(current_page, **opts)
107
+ def add_envelop(**opts, &block)
108
+ envelop = DrawioDsl::Schema::Envelop.new(current_page, **opts, &block)
89
109
  add_shape(envelop)
90
110
  end
91
111
 
92
- def add_diamond(**opts)
93
- diamond = DrawioDsl::Schema::Diamond.new(current_page, **opts)
112
+ def add_diamond(**opts, &block)
113
+ diamond = DrawioDsl::Schema::Diamond.new(current_page, **opts, &block)
94
114
  add_shape(diamond)
95
115
  end
96
116
 
97
- def add_document(**opts)
98
- document = DrawioDsl::Schema::Document.new(current_page, **opts)
117
+ def add_document(**opts, &block)
118
+ document = DrawioDsl::Schema::Document.new(current_page, **opts, &block)
99
119
  add_shape(document)
100
120
  end
101
121
 
102
- def add_ellipse(**opts)
103
- ellipse = DrawioDsl::Schema::Ellipse.new(current_page, **opts)
122
+ def add_ellipse(**opts, &block)
123
+ ellipse = DrawioDsl::Schema::Ellipse.new(current_page, **opts, &block)
104
124
  add_shape(ellipse)
105
125
  end
106
126
 
107
- def add_hexagon(**opts)
108
- hexagon = DrawioDsl::Schema::Hexagon.new(current_page, **opts)
127
+ def add_hexagon(**opts, &block)
128
+ hexagon = DrawioDsl::Schema::Hexagon.new(current_page, **opts, &block)
109
129
  add_shape(hexagon)
110
130
  end
111
131
 
112
- def add_container(**opts)
113
- container = DrawioDsl::Schema::Container.new(current_page, **opts)
114
- add_shape(container)
115
- end
116
-
117
- def add_container2(**opts)
118
- container2 = DrawioDsl::Schema::Container2.new(current_page, **opts)
119
- add_shape(container2)
132
+ def add_interface(**opts, &block)
133
+ interface = DrawioDsl::Schema::Interface.new(current_page, **opts, &block)
134
+ add_shape(interface)
120
135
  end
121
136
 
122
- def add_container3(**opts)
123
- container3 = DrawioDsl::Schema::Container3.new(current_page, **opts)
124
- add_shape(container3)
137
+ def add_klass(**opts, &block)
138
+ klass = DrawioDsl::Schema::Klass.new(current_page, **opts, &block)
139
+ add_shape(klass)
125
140
  end
126
141
 
127
- def add_container4(**opts)
128
- container4 = DrawioDsl::Schema::Container4.new(current_page, **opts)
129
- add_shape(container4)
130
- end
131
-
132
- def add_note(**opts)
133
- note = DrawioDsl::Schema::Note.new(current_page, **opts)
142
+ def add_note(**opts, &block)
143
+ note = DrawioDsl::Schema::Note.new(current_page, **opts, &block)
134
144
  add_shape(note)
135
145
  end
136
146
 
137
- def add_process(**opts)
138
- process = DrawioDsl::Schema::Process.new(current_page, **opts)
147
+ def add_process(**opts, &block)
148
+ process = DrawioDsl::Schema::Process.new(current_page, **opts, &block)
139
149
  add_shape(process)
140
150
  end
141
151
 
142
- def add_rectangle(**opts)
143
- rectangle = DrawioDsl::Schema::Rectangle.new(current_page, **opts)
152
+ def add_rectangle(**opts, &block)
153
+ rectangle = DrawioDsl::Schema::Rectangle.new(current_page, **opts, &block)
144
154
  add_shape(rectangle)
145
155
  end
146
156
 
147
- def add_rectangle2(**opts)
148
- rectangle2 = DrawioDsl::Schema::Rectangle2.new(current_page, **opts)
157
+ def add_rectangle2(**opts, &block)
158
+ rectangle2 = DrawioDsl::Schema::Rectangle2.new(current_page, **opts, &block)
149
159
  add_shape(rectangle2)
150
160
  end
151
161
 
152
- def add_square(**opts)
153
- square = DrawioDsl::Schema::Square.new(current_page, **opts)
162
+ def add_square(**opts, &block)
163
+ square = DrawioDsl::Schema::Square.new(current_page, **opts, &block)
154
164
  add_shape(square)
155
165
  end
156
166
 
157
- def add_step(**opts)
158
- step = DrawioDsl::Schema::Step.new(current_page, **opts)
167
+ def add_step(**opts, &block)
168
+ step = DrawioDsl::Schema::Step.new(current_page, **opts, &block)
159
169
  add_shape(step)
160
170
  end
161
171
 
162
- def add_tick(**opts)
163
- tick = DrawioDsl::Schema::Tick.new(current_page, **opts)
172
+ def add_tick(**opts, &block)
173
+ tick = DrawioDsl::Schema::Tick.new(current_page, **opts, &block)
164
174
  add_shape(tick)
165
175
  end
166
176
 
167
- def add_face(**opts)
168
- face = DrawioDsl::Schema::Face.new(current_page, **opts)
177
+ def add_todo(**opts, &block)
178
+ todo = DrawioDsl::Schema::Todo.new(current_page, **opts, &block)
179
+ add_shape(todo)
180
+ end
181
+
182
+ def add_face(**opts, &block)
183
+ face = DrawioDsl::Schema::Face.new(current_page, **opts, &block)
169
184
  add_shape(face)
170
185
  end
171
186
 
172
- def add_triangle(**opts)
173
- triangle = DrawioDsl::Schema::Triangle.new(current_page, **opts)
187
+ def add_triangle(**opts, &block)
188
+ triangle = DrawioDsl::Schema::Triangle.new(current_page, **opts, &block)
174
189
  add_shape(triangle)
175
190
  end
176
191
 
177
- def add_embed_row(**opts)
178
- embed_row = DrawioDsl::Schema::EmbedRow.new(current_page, **opts)
192
+ def add_embed_row(**opts, &block)
193
+ embed_row = DrawioDsl::Schema::EmbedRow.new(current_page, **opts, &block)
179
194
  add_shape(embed_row)
180
195
  end
181
196
 
182
- def add_embed_col50(**opts)
183
- embed_col50 = DrawioDsl::Schema::EmbedCol50.new(current_page, **opts)
197
+ def add_embed_col50(**opts, &block)
198
+ embed_col50 = DrawioDsl::Schema::EmbedCol50.new(current_page, **opts, &block)
184
199
  add_shape(embed_col50)
185
200
  end
186
201
 
187
- def add_embed_col200(**opts)
188
- embed_col200 = DrawioDsl::Schema::EmbedCol200.new(current_page, **opts)
202
+ def add_embed_col200(**opts, &block)
203
+ embed_col200 = DrawioDsl::Schema::EmbedCol200.new(current_page, **opts, &block)
189
204
  add_shape(embed_col200)
190
205
  end
191
206
  end