handlebarsjs 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bf7edc4bc2b73dc650191c1ed0d5bed62247eee5dac4a11adaea49994e97cb37
4
+ data.tar.gz: 887e5647e54f683387dd1267828c3fcdb8137b3fb7d754d1370809bef7f42e25
5
+ SHA512:
6
+ metadata.gz: 3026da3fd166235e97eb4a7679b1173be9cba49300b02f925cca8dbe360799f1f5612e5c4060b96d1611ae1a322e6dea693524b8eedd54075e96f507dda7e8fd
7
+ data.tar.gz: 3a36a4a7e0d39e8e7e430b119a109077478e5ef43c623e8b6ba359c8a851205aa76668343063aea57620e378bd79580e920efd7c6ffcdfd83758b04bea1da1dc
data/.builders/_.rb ADDED
@@ -0,0 +1 @@
1
+ # require_relative './path/here'
data/.builders/boot.rb ADDED
@@ -0,0 +1,68 @@
1
+ # Boot Sequence
2
+
3
+ include KLog::Logging
4
+
5
+ CONFIG_KEY = :handlebarsjs
6
+
7
+ log.kv 'working folder', Dir.pwd
8
+
9
+ Handlebars::Helpers.configure do |config|
10
+ config.helper_config_file = File.join(Gem.loaded_specs['handlebars-helpers'].full_gem_path, '.handlebars_helpers.json')
11
+ config.string_formatter_config_file = File.join(Gem.loaded_specs['handlebars-helpers'].full_gem_path, '.handlebars_string_formatters.json')
12
+ end
13
+
14
+ def camel
15
+ require 'handlebars/helpers/string_formatting/camel'
16
+ Handlebars::Helpers::StringFormatting::Camel.new
17
+ end
18
+
19
+ def titleize
20
+ require 'handlebars/helpers/string_formatting/titleize'
21
+ Handlebars::Helpers::StringFormatting::Titleize.new
22
+ end
23
+
24
+ def pluralize
25
+ require 'handlebars/helpers/inflection/pluralize'
26
+ Handlebars::Helpers::Inflection::Pluralize.new
27
+ end
28
+
29
+ def singularize
30
+ require 'handlebars/helpers/inflection/singularize'
31
+ Handlebars::Helpers::Inflection::Singularize.new
32
+ end
33
+
34
+ def dasherize
35
+ require 'handlebars/helpers/string_formatting/dasherize'
36
+ Handlebars::Helpers::StringFormatting::Dasherize.new
37
+ end
38
+
39
+ def k_builder
40
+ @k_builder ||= KBuilder::BaseBuilder.init(KConfig.configuration(CONFIG_KEY))
41
+ end
42
+
43
+ KConfig.configure(CONFIG_KEY) do |config|
44
+ builder_folder = Dir.pwd
45
+ base_folder = File.expand_path('../', builder_folder)
46
+ global_template = File.expand_path('~/dev/kgems/k_templates/templates')
47
+
48
+ config.template_folders.add(:global_template , global_template)
49
+ config.template_folders.add(:template , File.expand_path('.templates', Dir.pwd))
50
+
51
+ config.target_folders.add(:app , base_folder)
52
+ config.target_folders.add(:lib , :app, 'lib', 'drawio_dsl')
53
+ config.target_folders.add(:spec , :app, 'spec', 'drawio_dsl')
54
+ config.target_folders.add(:docs , :app, 'docs')
55
+ config.target_folders.add(:builder , builder_folder)
56
+ end
57
+
58
+ KConfig.configuration(CONFIG_KEY).debug
59
+
60
+ area = KManager.add_area(CONFIG_KEY)
61
+ resource_manager = area.resource_manager
62
+ resource_manager
63
+ .fileset
64
+ .glob('*.rb', exclude: ['boot.rb'])
65
+ .glob('generators/**/*.rb')
66
+ resource_manager.add_resources
67
+
68
+ KManager.boot
@@ -0,0 +1,130 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+ application_name = :handlebarsjs
4
+ director = KDirector::Dsls::RubyGemDsl
5
+ .init(k_builder,
6
+ on_exist: :skip, # %i[skip write compare]
7
+ on_action: :queue # %i[queue execute]
8
+ )
9
+ .data(
10
+ ruby_version: '2.7',
11
+ application: application_name,
12
+ application_description: 'handlebarsjs GEM wraps the handlebars.js library and provides ruby/javascript interoperability',
13
+ application_lib_path: application_name.to_s,
14
+ application_lib_namespace: 'Handlebarsjs',
15
+ namespaces: ['Handlebarsjs'],
16
+ author: 'David Cruwys',
17
+ author_email: 'david@ideasmen.com.au',
18
+ initial_semver: '0.0.1',
19
+ main_story: 'As a Ruby Developer, I want to use handlebarsjs from my ruby applications, so that I can easily access javascript templating',
20
+ copyright_date: '2022',
21
+ website: 'http://appydave.com/gems/handlebarsjs'
22
+ )
23
+ .github(
24
+ active: false,
25
+ repo_name: application_name
26
+ ) do
27
+ create_repository
28
+ # delete_repository
29
+ # list_repositories
30
+ open_repository
31
+ # run_command('git init')
32
+ end
33
+ .blueprint(
34
+ active: false,
35
+ name: :bin_hook,
36
+ description: 'initialize repository',
37
+ on_exist: :write) do
38
+
39
+ cd(:app)
40
+
41
+ run_template_script('bin/runonce/git-setup.sh', dom: dom)
42
+
43
+ add('.githooks/commit-msg').run_command('chmod +x .githooks/commit-msg')
44
+ add('.githooks/pre-commit').run_command('chmod +x .githooks/pre-commit')
45
+
46
+ add('.gitignore')
47
+
48
+ run_command('git config core.hooksPath .githooks') # enable sharable githooks (developer needs to turn this on before editing rep)
49
+
50
+ run_command("git add .; git commit -m 'chore: #{self.options.description.downcase}'; git push")
51
+ run_command("gh repo edit -d \"#{dom[:application_description]}\"")
52
+ end
53
+ .package_json(
54
+ active: false,
55
+ name: :package_json,
56
+ description: 'Set up the package.json file for semantic versioning'
57
+ ) do
58
+ self
59
+ .add('package.json', dom: dom)
60
+ .play_actions
61
+
62
+ self
63
+ .add_script('release', 'semantic-release')
64
+ .sort
65
+ .development
66
+ .npm_add_group('semver-ruby')
67
+
68
+ run_command("git add .; git commit -m 'chore: #{self.options.description.downcase}'; git push")
69
+ end
70
+ .blueprint(
71
+ active: false,
72
+ name: :opinionated,
73
+ description: 'opinionated GEM files',
74
+ on_exist: :write) do
75
+
76
+ cd(:app)
77
+
78
+ add('bin/setup')
79
+ add('bin/console')
80
+
81
+ add("lib/#{typed_dom.application}.rb" , template_file: 'lib/applet_name.rb' , dom: dom)
82
+ add("lib/#{typed_dom.application}/version.rb" , template_file: 'lib/applet_name/version.rb' , dom: dom)
83
+
84
+ add('spec/spec_helper.rb')
85
+ add("spec/#{typed_dom.application}_spec.rb" , template_file: 'spec/applet_name_spec.rb', dom: dom)
86
+
87
+ add("#{typed_dom.application}.gemspec" , template_file: 'applet_name.gemspec', dom: dom)
88
+ add('Gemfile', dom: dom)
89
+ add('Guardfile', dom: dom)
90
+ add('Rakefile', dom: dom)
91
+ add('.rspec', dom: dom)
92
+ add('.rubocop.yml', dom: dom)
93
+ add('README.md', dom: dom)
94
+ add('CODE_OF_CONDUCT.md', dom: dom)
95
+ add('LICENSE.txt', dom: dom)
96
+
97
+ run_command("rubocop -a")
98
+
99
+ run_command("git add .; git commit -m 'chore: #{self.options.description.downcase}'; git push")
100
+ end
101
+ .blueprint(
102
+ active: true,
103
+ name: :ci_cd,
104
+ description: 'github actions (CI/CD)',
105
+ on_exist: :write) do
106
+
107
+ cd(:app)
108
+
109
+ run_command("gh secret set SLACK_WEBHOOK --body \"$SLACK_REPO_WEBHOOK\"")
110
+ run_command("gh secret set GEM_HOST_API_KEY --body \"$GEM_HOST_API_KEY\"")
111
+
112
+ add('.github/workflows/main.yml')
113
+ add('.releaserc.json')
114
+
115
+ run_command("git add .; git commit -m 'chore: #{self.options.description.downcase}'; git push")
116
+ end
117
+
118
+ director.play_actions
119
+ # director.builder.logit
120
+ end
121
+ end
122
+
123
+ KManager.opts.app_name = 'handlebarsjs'
124
+ KManager.opts.sleep = 2
125
+ KManager.opts.reboot_on_kill = 0
126
+ KManager.opts.reboot_sleep = 4
127
+ KManager.opts.exception_style = :short
128
+ KManager.opts.show.time_taken = true
129
+ KManager.opts.show.finished = true
130
+ KManager.opts.show.finished_message = 'FINISHED :)'
@@ -0,0 +1,474 @@
1
+ KManager.action :domain_model do
2
+ action do
3
+
4
+ DrawioDsl::Drawio
5
+ .init(k_builder, on_exist: :write, on_action: :execute)
6
+ .diagram(theme: :style_04)
7
+ .page('Domain Modal', margin_left: 0, margin_top: 0, rounded: 0, background: '#fafafa') do
8
+ grid_layout(wrap_at: 6, grid_w: 180, grid_h: 180)
9
+
10
+ shape_element = :rectangle2 # hexagon, diamond, ellipse
11
+ shape_element_w = 75
12
+ shape_element_h = 50
13
+ shape_element_theme = :style_03
14
+
15
+ # need a blank
16
+ # square(fill_color: '#fafafa', stroke_color: '#fafafa', font_color: '#333333')
17
+
18
+ square(title: 'Configuration', theme: :style_01)
19
+
20
+ klass(description: '') do
21
+ format
22
+ .header('ShapeDefaults')
23
+ .field(:type, type: :symbol)
24
+ .field(:category, type: :symbol)
25
+ .field(:x, type: :integer)
26
+ .field(:y, type: :integer)
27
+ .field(:w, type: :integer)
28
+ .field(:h, type: :integer)
29
+ .field(:style_modifiers, type: :string)
30
+ end
31
+
32
+ klass(description: '') do
33
+ format
34
+ .header('ShapeThemeStyle')
35
+ .field(:theme, type: :symbol)
36
+ .field(:fill_color, type: :string)
37
+ .field(:stroke_color, type: :string)
38
+ .field(:font_color, type: :string)
39
+ end
40
+
41
+ klass(description: 'Configuration container for the DrawIO DSL') do
42
+ format
43
+ .header('Configuration')
44
+ .field(:base_style, type: :Struct)
45
+ .field(:shapes, type: 'Hash<Struct>')
46
+ .field(:themes, type: :Hash)
47
+ .method('+ <ConfigurationThemes>')
48
+ .method('+ <ConfigurationShapes>')
49
+ end
50
+
51
+ interface(description: 'Used to attach configuration to KConfig module', theme: :style_02) do
52
+ format
53
+ .header('ConfigurationExtension', interface_type: 'MixIn')
54
+ .field(:drawio, type: :Configuration)
55
+ end
56
+
57
+ interface(description: 'Attach predefined DrawIO shapes to KConfig module', theme: :style_02) do
58
+ format
59
+ .header('ConfigurationShapes', interface_type: 'MixIn')
60
+ .method(:add_shapes)
61
+ end
62
+
63
+ interface(description: 'Configuration for each theme', theme: :style_02) do
64
+ format
65
+ .header('ConfigurationThemes', interface_type: 'MixIn')
66
+ .method(:add_theme)
67
+ .method(:add_themes)
68
+ end
69
+
70
+ square(title: 'DOM Builder', theme: :style_01)
71
+
72
+ klass(description: 'Build Document object model to represent DrawioDsl output file.') do
73
+ format
74
+ .header('DomBuilder')
75
+ .field(:actions, type: :Array)
76
+ .field(:last_action, type: :Hash)
77
+ .field(:focus_node, type: :Anchor)
78
+ .field(:current_page, type: :Page)
79
+ .field(:dom)
80
+ .method(:reset)
81
+ .method(:queue_action)
82
+ .method(:set_diagram)
83
+ .method(:diagram)
84
+ .method(:add_page)
85
+ .method(:add_grid_layout)
86
+ .method(:add_flex_layout)
87
+ .method(:add_layout)
88
+ .method(:add_shape)
89
+ .method('+ <DomBuilderShapes>')
90
+ end
91
+
92
+ interface(description: 'Builder methods for each shape, line and text element to attach to DomBuilder.', theme: :style_02) do
93
+ format
94
+ .header('DomBuilderShapes', interface_type: 'MixIn')
95
+ .method('add_* (for each shape)')
96
+ end
97
+
98
+ square(title: 'DrawIO DSL', theme: :style_01)
99
+
100
+ klass(description: 'DSL for draw-io diagrams') do
101
+ format
102
+ .header('Drawio')
103
+ .method(:diagram)
104
+ .method(:page)
105
+ .method(:save)
106
+ .method(:osave)
107
+ .method(:export_svg)
108
+ .method(:export_png)
109
+ end
110
+
111
+ klass(description: 'DSL for draw-io diagrams') do
112
+ format
113
+ .header('DrawioPage')
114
+ .method(:grid_layout)
115
+ .method(:flex_layout)
116
+ .method('+ <DrawioShapes>')
117
+ end
118
+
119
+ interface(description: 'List of DSL methods for each common shape', theme: :style_02) do
120
+ format
121
+ .header('DrawioShapes', interface_type: 'MixIn')
122
+ .method(:random)
123
+ .method('* (for each shape)')
124
+ end
125
+
126
+ square(title: '1000 Extension Shapes', theme: :style_01)
127
+
128
+ klass(description: '1000s of extension shapes derived from Extensions.js that can be used via the add_shape method') do
129
+ format
130
+ .header('DrawioExtensions')
131
+ .field(:sections, type: :Array)
132
+ .field(:current_section, type: :Hash)
133
+ .method(:section)
134
+ .method(:shape)
135
+ .method(:to_h)
136
+ .method(:build_extensions)
137
+ .method(:configure_extensions)
138
+ .method('+ <DrawioExtensionsActive>')
139
+ end
140
+
141
+ interface(description: 'Mark shapes as active or not, based on incomplete style being made inactive', theme: :style_02) do
142
+ format
143
+ .header('DrawioExtensionsActive', interface_type: 'MixIn')
144
+ .method(:apply_active_flags)
145
+ .method(:check_if_active)
146
+ end
147
+
148
+ klass(description: 'Layout engine is responsible for laying out the elements on the page') do
149
+ format
150
+ .header('LayoutEngine')
151
+ .field(:page, type: :Page)
152
+ .field(:current_page, type: :Page)
153
+ .field(:current_layout, type: :Layout)
154
+ .method(:call)
155
+ .method(:traverse_node)
156
+ .method(:process_node)
157
+ end
158
+
159
+ klass(description: 'Build the DrawioDsl XML file that is the basis of any draw-io diagrams.') do
160
+ format
161
+ .header('XmlBuilder')
162
+ .field(:diagram)
163
+ .method(:build)
164
+ end
165
+
166
+ square(title: 'Formatters', theme: :style_01)
167
+
168
+ klass(description: 'HTML builder has methods for common HTML elements that get written sequentially') do
169
+ format
170
+ .header('HtmlBuilder')
171
+ .field(:element_style_defaults, type: :Hash)
172
+ .method(:default_for)
173
+ .method(:style_for)
174
+ .method(:empty?)
175
+ .method(:exist?)
176
+ .method(:as_html)
177
+ .method(:hr)
178
+ .method(:b)
179
+ .method(:p)
180
+ .method(:add_line)
181
+ .method(:add_placeholder)
182
+ .method(:group)
183
+ .method(:build_lines)
184
+ .method(:lines)
185
+ .method(:groups)
186
+ end
187
+
188
+ interface(description: 'Create an instance of a HTML formatter on the shape', theme: :style_02) do
189
+ format
190
+ .header('Factory', interface_type: 'MixIn')
191
+ .method(:formatter)
192
+ .method(:format_instance)
193
+ end
194
+
195
+ klass(description: 'Base for any HTML formatter') do
196
+ format
197
+ .header('BaseFormatter')
198
+ .field(:html, type: :String)
199
+ .method(:empty?)
200
+ .method(:as_html)
201
+ end
202
+
203
+ klass(description: 'Format the HTML to display an interface on a class diagram') do
204
+ format
205
+ .header('InterfaceFormatter')
206
+ .method(:header)
207
+ .method(:field)
208
+ .method(:method)
209
+ .method(:as_html)
210
+ end
211
+
212
+ klass(description: 'Format the HTML to display an class on a class diagram') do
213
+ format
214
+ .header('KlassFormatter')
215
+ .method(:header)
216
+ .method(:field)
217
+ .method(:method)
218
+ .method(:as_html)
219
+ end
220
+
221
+ klass(description: 'style_builder') do
222
+ format
223
+ .header('StyleBuilder')
224
+ .field(:defaults, type: :Hash)
225
+ .field(:custom, type: :Hash)
226
+ .method(:customize)
227
+ .method(:style)
228
+ .method(:style_attribute)
229
+ .method(:build)
230
+ end
231
+
232
+ square(title: 'Schema', theme: :style_01)
233
+
234
+ klass(description: 'Shape is a graphical element, it can be a shape, a text, or a group') do
235
+ format
236
+ .header('Shape')
237
+ .field(:category, type: :Symbol)
238
+ .field(:theme, type: :Symbol)
239
+ .field(:title, type: :String)
240
+ .field(:value, type: :String)
241
+ .field(:white_space, type: :int)
242
+ .field(:html, type: :int)
243
+ .field(:rounded, type: :int)
244
+ .field(:shadow, type: :int)
245
+ .field(:glass, type: :int)
246
+ .field(:sketch, type: :int)
247
+ .field(:fill_color, type: :String)
248
+ .field(:stroke_color, type: :String)
249
+ .field(:font_color, type: :String)
250
+ .field(:gradient, type: :String)
251
+ .field(:x, type: :int)
252
+ .field(:y, type: :int)
253
+ .field(:w, type: :int)
254
+ .field(:h, type: :int)
255
+ .field(:style_modifiers, type: :Hash)
256
+ .field(:source, type: 'Symbol (id)')
257
+ .field(:target, type: 'Symbol (id)')
258
+ .method('> configure_shape')
259
+ .method(:initialize)
260
+ .method(:shape_defaults)
261
+ .method(:apply_defaults)
262
+ .method(:format)
263
+ .method(:style)
264
+ .method(:as_xml)
265
+ .method(:draw_element)
266
+ .method(:draw_line)
267
+ .method(:to_h)
268
+ end
269
+
270
+ klass(description: 'common_style') do
271
+ format
272
+ .header('CommonStyle')
273
+ .field(:white_space, type: :int)
274
+ .field(:html, type: :int)
275
+ .field(:rounded, type: :int)
276
+ .field(:shadow, type: :int)
277
+ .field(:glass, type: :int)
278
+ .field(:sketch, type: :int)
279
+ .method(:to_h)
280
+ end
281
+
282
+ klass(description: 'default_palette') do
283
+ format
284
+ .header('DefaultPalette')
285
+ .field(:fill_color, type: :String)
286
+ .field(:stroke_color, type: :String)
287
+ .field(:font_color, type: :String)
288
+ .field(:gradient, type: :String)
289
+ .method(:to_h)
290
+ end
291
+
292
+ klass(description: 'diagram') do
293
+ format
294
+ .header('Diagram')
295
+ .field(:host, type: :String)
296
+ .field(:theme, type: :String)
297
+ .field(:style, type: :CommonStyle)
298
+ .field(:palette, type: :DefaultPalette)
299
+ .field(:pages, type: :Array)
300
+ .method(:to_h)
301
+ end
302
+ klass(description: 'node') do
303
+ format
304
+ .header('Node')
305
+ .field(:id, type: :String)
306
+ .field(:page, type: :Page)
307
+ .field(:parent, type: :Node)
308
+ .field(:classification, type: :String)
309
+ .field(:type, type: :String)
310
+ .field(:nodes, type: :Array)
311
+ .method(:initialize)
312
+ .method(:to_h)
313
+ .method(:root?)
314
+ .method(:add_node)
315
+ end
316
+
317
+ klass(description: 'node_list') do
318
+ format
319
+ .header('NodeList')
320
+ .field(:nodes, type: :Array)
321
+ .method(:add)
322
+ .method(:all)
323
+ .method(:shapes)
324
+ .method(:layouts)
325
+ .method(:length)
326
+ .method(:empty?)
327
+ .method(:any?)
328
+ .method(:first)
329
+ .method(:as_xml)
330
+ .method(:to_h)
331
+ end
332
+
333
+ klass(description: 'page') do
334
+ format
335
+ .header('Page')
336
+ .field(:diagram, type: :Diagram)
337
+ .field(:position_x, type: :int)
338
+ .field(:position_y, type: :int)
339
+ .field(:id, type: :String)
340
+ .field(:active, type: :bool)
341
+ .field(:name, type: :String)
342
+ .field(:theme, type: :Symbol)
343
+ .field(:style, type: :CommonStyle)
344
+ .field(:palette, type: :DefaultPalette)
345
+ .field(:margin_left, type: :int)
346
+ .field(:margin_top, type: :int)
347
+ .field(:nodes, type: :Array)
348
+ .field(:grid, type: :String)
349
+ .field(:grid_size, type: :int)
350
+ .field(:guides, type: :String)
351
+ .field(:tooltips, type: :String)
352
+ .field(:connect, type: :String)
353
+ .field(:arrows, type: :String)
354
+ .field(:fold, type: :String)
355
+ .field(:page_no, type: :String)
356
+ .field(:page_scale, type: :String)
357
+ .field(:page_width, type: :String)
358
+ .field(:page_height, type: :String)
359
+ .field(:background, type: :String)
360
+ .field(:page_shadow, type: :String)
361
+ .field(:math, type: :String)
362
+ .field(:active?, type: :Boolean)
363
+ .method(:add_node)
364
+ .method(:as_xml)
365
+ .method(:to_h)
366
+ .method(:settings)
367
+ end
368
+
369
+ square(title: 'Schema/Layouts', theme: :style_01)
370
+
371
+ klass(description: 'flex_layout') do
372
+ format
373
+ .header('FlexLayout')
374
+ .field(:direction, type: :String)
375
+ .field(:wrap_at, type: :int)
376
+ .field(:gap, type: :int)
377
+ .field(:perpendicular_max, type: :int)
378
+ .method(:position_shape)
379
+ .method(:to_h)
380
+ end
381
+
382
+ klass(description: 'grid_layout') do
383
+ format
384
+ .header('GridLayout')
385
+ .field(:direction, type: :String)
386
+ .field(:wrap_at, type: :int)
387
+ .field(:grid_size, type: :int)
388
+ .field(:grid_w, type: :int)
389
+ .field(:grid_h, type: :int)
390
+ .field(:cell_no, type: :int)
391
+ .field(:h_align, type: :String)
392
+ .field(:v_align, type: :String)
393
+ .method(:position_shape)
394
+ .method(:to_h)
395
+ end
396
+
397
+ klass(description: 'layout') do
398
+ format
399
+ .header('Layout')
400
+ .field(:anchor_x, type: :String)
401
+ .field(:anchor_y, type: :String)
402
+ .method(:fire_after_init)
403
+ .method(:after_init)
404
+ .method(:to_h)
405
+ end
406
+
407
+
408
+ square(title: 'Schema/virtual', theme: :style_01)
409
+ send(shape_element, title: 'anchor' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
410
+ square(title: 'Schema/shapes', theme: :style_01)
411
+
412
+ grid_layout(wrap_at: 12, grid_w: 90, grid_h: 70)
413
+
414
+ send(shape_element, title: 'actor' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
415
+ send(shape_element, title: 'actor2' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
416
+ send(shape_element, title: 'callout' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
417
+ send(shape_element, title: 'callout2' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
418
+ send(shape_element, title: 'callout3' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
419
+ send(shape_element, title: 'callout4' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
420
+ send(shape_element, title: 'circle' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
421
+ send(shape_element, title: 'cloud' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
422
+ send(shape_element, title: 'container' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
423
+ send(shape_element, title: 'container2' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
424
+ send(shape_element, title: 'container3' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
425
+ send(shape_element, title: 'container4' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
426
+ send(shape_element, title: 'cross' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
427
+ send(shape_element, title: 'database' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
428
+ send(shape_element, title: 'db_json' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
429
+ send(shape_element, title: 'diamond' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
430
+ send(shape_element, title: 'document' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
431
+ send(shape_element, title: 'ellipse' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
432
+ send(shape_element, title: 'embed_col200' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
433
+ send(shape_element, title: 'embed_col50' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
434
+ send(shape_element, title: 'embed_row' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
435
+ send(shape_element, title: 'envelop' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
436
+ send(shape_element, title: 'face' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
437
+ send(shape_element, title: 'h1' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
438
+ send(shape_element, title: 'h2' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
439
+ send(shape_element, title: 'h3' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
440
+ send(shape_element, title: 'h4' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
441
+ send(shape_element, title: 'h5' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
442
+ send(shape_element, title: 'h6' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
443
+ send(shape_element, title: 'hexagon' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
444
+ send(shape_element, title: 'interface' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
445
+ send(shape_element, title: 'klass' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
446
+ send(shape_element, title: 'line' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
447
+ send(shape_element, title: 'note' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
448
+ send(shape_element, title: 'p' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
449
+ send(shape_element, title: 'process' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
450
+ send(shape_element, title: 'rectangle' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
451
+ send(shape_element, title: 'rectangle2' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
452
+ send(shape_element, title: 'shape' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
453
+ send(shape_element, title: 'square' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
454
+ send(shape_element, title: 'step' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
455
+ send(shape_element, title: 'tick' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
456
+ send(shape_element, title: 'todo' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
457
+ send(shape_element, title: 'triangle' , w: shape_element_w, h: shape_element_h, theme: shape_element_theme)
458
+
459
+ end
460
+ .cd(:docs)
461
+ .osave('domain_model.drawio')
462
+ .save_json('domain_model')
463
+ .export_svg('domain_model', page: 1)
464
+ end
465
+ end
466
+
467
+ KManager.opts.app_name = 'domain_model'
468
+ KManager.opts.sleep = 2
469
+ KManager.opts.reboot_on_kill = 0
470
+ KManager.opts.reboot_sleep = 4
471
+ KManager.opts.exception_style = :short
472
+ KManager.opts.show.time_taken = true
473
+ KManager.opts.show.finished = true
474
+ KManager.opts.show.finished_message = 'FINISHED :)'