drawio_dsl 0.2.0 → 0.4.1

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.data/shapes.json +82 -0
  3. data/.builders/.templates/basic/schema_require.rb +16 -0
  4. data/.builders/.templates/schema_shape.rb +9 -0
  5. data/.builders/.templates/schema_shape_spec.rb +13 -0
  6. data/.builders/blueprint/shapes.rb +29 -0
  7. data/.builders/boot.rb +5 -0
  8. data/.builders/generators/90-requires.rb +35 -0
  9. data/.builders/generators/sample_diagrams/10-page-margin.rb +46 -0
  10. data/.builders/generators/sample_diagrams/15-grid-direction.rb +40 -0
  11. data/.builders/generators/sample_diagrams/16-grid-alignment.rb +73 -0
  12. data/.builders/generators/sample_diagrams/20-styles.rb +64 -0
  13. data/.builders/generators/sample_diagrams/25-themes.rb +24 -0
  14. data/.rubocop.yml +2 -1
  15. data/CHANGELOG.md +21 -0
  16. data/lib/drawio_dsl/configuration.rb +56 -43
  17. data/lib/drawio_dsl/dom_builder.rb +25 -0
  18. data/lib/drawio_dsl/drawio.rb +49 -0
  19. data/lib/drawio_dsl/layout_engine.rb +12 -28
  20. data/lib/drawio_dsl/schema/_.rb +23 -0
  21. data/lib/drawio_dsl/schema/common_style.rb +42 -0
  22. data/lib/drawio_dsl/schema/default_palette.rb +31 -0
  23. data/lib/drawio_dsl/schema/diagram.rb +57 -0
  24. data/lib/drawio_dsl/schema/layouts/flex_layout.rb +87 -0
  25. data/lib/drawio_dsl/schema/layouts/grid_layout.rb +102 -0
  26. data/lib/drawio_dsl/schema/layouts/layout.rb +41 -0
  27. data/lib/drawio_dsl/schema/node.rb +53 -0
  28. data/lib/drawio_dsl/schema/page.rb +135 -0
  29. data/lib/drawio_dsl/schema/shapes/callout.rb +9 -0
  30. data/lib/drawio_dsl/schema/shapes/circle.rb +9 -0
  31. data/lib/drawio_dsl/schema/shapes/cloud.rb +9 -0
  32. data/lib/drawio_dsl/schema/shapes/diamond.rb +9 -0
  33. data/lib/drawio_dsl/schema/shapes/ellipse.rb +9 -0
  34. data/lib/drawio_dsl/schema/shapes/hexagon.rb +9 -0
  35. data/lib/drawio_dsl/schema/shapes/note.rb +9 -0
  36. data/lib/drawio_dsl/schema/shapes/process.rb +9 -0
  37. data/lib/drawio_dsl/schema/shapes/rectangle.rb +9 -0
  38. data/lib/drawio_dsl/schema/shapes/shape.rb +125 -0
  39. data/lib/drawio_dsl/schema/shapes/square.rb +9 -0
  40. data/lib/drawio_dsl/version.rb +1 -1
  41. data/lib/drawio_dsl.rb +1 -1
  42. data/package-lock.json +2 -2
  43. data/package.json +1 -1
  44. metadata +33 -5
  45. data/.builders/generators/10-layout.rb +0 -34
  46. data/lib/drawio_dsl/drawio_dsl-OLD.x +0 -335
  47. data/lib/drawio_dsl/schema.rb +0 -604
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 96f9176e2e3f9b37f0a02f462d075835aae641a43d14dc45c747a1434fcb17df
4
- data.tar.gz: 07ef19170c1721bb9ebe7a58d9cc6d20ca000d620b555941c2e396d83a8b27e0
3
+ metadata.gz: 43e99df9f899e7c7ebeb6618d9b2018cad1a17abf786cf047d918c1eed513f77
4
+ data.tar.gz: 2b251a9fa966d5447cc8130b1a1b9a2ac90e7f229b5b1aa0d182a233179ec88e
5
5
  SHA512:
6
- metadata.gz: ccb338c21e1a14d55e0fb7965c05c014714e37081a1b2f365ea01168017d15327043255a23346dde6c7674419c5458ea9516411240108e5e5c4cb688b9210a9f
7
- data.tar.gz: ab033223b347fa65e1e6e2ddb91d93085276052dd21685d5bd76db0c9cc0f92c1c0a2e5cade339f4e1f7a67569ee42153249d61ec6f15bdb8401e7b52d25d57b
6
+ metadata.gz: d0da48b1461fa48072af5674a689dd9beac83fee630cb2cd656c22a3495fdffd062ec3fffa80dfca57478a240557ac70c456c14adc87b31d6dd2d4930d77dc2e
7
+ data.tar.gz: 6376e89f6e55ff96b644cbdf23f26000facdad358791f9bfa66eeee4bc7193389cc75c6601c3f5a8cc7a51f24c5717f1985dbcdd86214efbb1cadf5eff991b1e
@@ -0,0 +1,82 @@
1
+ [
2
+ {
3
+ "type": "callout",
4
+ "x": 0,
5
+ "y": 0,
6
+ "w": 160,
7
+ "h": 160,
8
+ "style_modifiers": "double=1;shape=callout"
9
+ },
10
+ {
11
+ "type": "circle",
12
+ "x": 0,
13
+ "y": 0,
14
+ "w": 160,
15
+ "h": 160,
16
+ "style_modifiers": "double=1;ellipse"
17
+ },
18
+ {
19
+ "type": "cloud",
20
+ "x": 0,
21
+ "y": 0,
22
+ "w": 160,
23
+ "h": 160,
24
+ "style_modifiers": "double=1;shape=cloud"
25
+ },
26
+ {
27
+ "type": "diamond",
28
+ "x": 0,
29
+ "y": 0,
30
+ "w": 160,
31
+ "h": 160,
32
+ "style_modifiers": "double=1;rhombus"
33
+ },
34
+ {
35
+ "type": "ellipse",
36
+ "x": 0,
37
+ "y": 0,
38
+ "w": 200,
39
+ "h": 120,
40
+ "style_modifiers": "double=1;ellipse"
41
+ },
42
+ {
43
+ "type": "hexagon",
44
+ "x": 0,
45
+ "y": 0,
46
+ "w": 200,
47
+ "h": 120,
48
+ "style_modifiers": "double=1;shape=hexagon"
49
+ },
50
+ {
51
+ "type": "note",
52
+ "x": 0,
53
+ "y": 0,
54
+ "w": 160,
55
+ "h": 160,
56
+ "style_modifiers": "double=1;shape=note"
57
+ },
58
+ {
59
+ "type": "process",
60
+ "x": 0,
61
+ "y": 0,
62
+ "w": 200,
63
+ "h": 120,
64
+ "style_modifiers": "double=1;shape=process"
65
+ },
66
+ {
67
+ "type": "rectangle",
68
+ "x": 0,
69
+ "y": 0,
70
+ "w": 200,
71
+ "h": 120,
72
+ "style_modifiers": ""
73
+ },
74
+ {
75
+ "type": "square",
76
+ "x": 0,
77
+ "y": 0,
78
+ "w": 160,
79
+ "h": 160,
80
+ "style_modifiers": ""
81
+ }
82
+ ]
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'common_style'
4
+ require_relative 'default_palette'
5
+ require_relative 'diagram'
6
+ require_relative 'node'
7
+ require_relative 'page'
8
+
9
+ require_relative 'layouts/layout'
10
+ require_relative 'layouts/flex_layout'
11
+ require_relative 'layouts/grid_layout'
12
+
13
+ require_relative 'shapes/shape'
14
+ {{#each shapes}}
15
+ require_relative 'shapes/{{snake ./type}}'
16
+ {{/each}}
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class {{camle type}} < Shape
6
+ configure_shape(:{{snake type}})
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe DrawioDsl::Schema::{{camle type}} do
4
+ include_context :node_dependencies
5
+
6
+ subject { instance }
7
+
8
+ let(:instance) { described_class.new(diagram, **args) }
9
+ let(:args) { { id: 1 } }
10
+ let(:default) { KConfig.configuration.drawio.shapes.{{snake type}} }
11
+
12
+ it_behaves_like :basic_shape_attributes
13
+ end
@@ -0,0 +1,29 @@
1
+ KManager.model :shapes, namespace: %i[domain] do
2
+ # microapp = import(:handlebars_helpers, :microapp)
3
+
4
+ table :shapes do
5
+ fields [:type, :x, :y, :w, :h, :style_modifiers]
6
+
7
+ # row :shape , x: 0, y: 0, w: 20, h: 20, style_modifiers: ''
8
+ row :callout , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;shape=callout'
9
+ row :circle , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;ellipse'
10
+ row :cloud , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;shape=cloud'
11
+ row :diamond , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;rhombus'
12
+ row :ellipse , x: 0, y: 0, w: 200, h: 120, style_modifiers: 'double=1;ellipse'
13
+ row :hexagon , x: 0, y: 0, w: 200, h: 120, style_modifiers: 'double=1;shape=hexagon'
14
+ row :note , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;shape=note'
15
+ row :process , x: 0, y: 0, w: 200, h: 120, style_modifiers: 'double=1;shape=process'
16
+ row :rectangle , x: 0, y: 0, w: 200, h: 120, style_modifiers: ''
17
+ row :square , 0, 0, 160, 160, ''
18
+
19
+ end
20
+
21
+ action do
22
+ data = self.raw_data
23
+ shapes = JSON.pretty_generate(data['shapes'])
24
+
25
+ k_builder
26
+ .cd(:data)
27
+ .add_file('shapes.json', content: shapes, on_exist: :write)
28
+ end
29
+ end
data/.builders/boot.rb CHANGED
@@ -45,11 +45,15 @@ KConfig.configure(CONFIG_KEY) do |config|
45
45
  base_folder = File.expand_path('../', builder_folder)
46
46
  global_template = File.expand_path('~/dev/kgems/k_templates/templates')
47
47
 
48
+ # Templates
48
49
  config.template_folders.add(:global_template , global_template)
49
50
  config.template_folders.add(:template , File.expand_path('.templates', Dir.pwd))
50
51
 
52
+ # Target Folders
51
53
  config.target_folders.add(:app , base_folder)
54
+ config.target_folders.add(:lib , :app, 'lib', 'drawio_dsl')
52
55
  config.target_folders.add(:builder , builder_folder)
56
+ config.target_folders.add(:data , :builder, '.data')
53
57
  end
54
58
 
55
59
  KConfig.configuration(CONFIG_KEY).debug
@@ -60,6 +64,7 @@ resource_manager
60
64
  .fileset
61
65
  .glob('*.rb', exclude: ['boot.rb'])
62
66
  .glob('generators/**/*.rb')
67
+ .glob('blueprint/**/*.rb')
63
68
  resource_manager.add_resources
64
69
 
65
70
  KManager.boot
@@ -0,0 +1,35 @@
1
+ KManager.action :requires do
2
+ # NOT yet working on file change
3
+ # depend_on(:domain_shapes_kdoc)
4
+
5
+ # init do
6
+ # # context.shapes = import_data(:domain_shapes_kdoc, as: :ostruct)
7
+ # end
8
+
9
+ action do
10
+ shapes_file = k_builder.target_folders.get_filename(:data, 'shapes.json')
11
+ shapes = JSON.parse(File.read(shapes_file))
12
+ puts 'david'
13
+ KDirector::Dsls::BasicDsl
14
+ .init(k_builder,
15
+ on_exist: :write, # %i[skip write compare]
16
+ on_action: :execute # %i[queue execute]
17
+ )
18
+ .blueprint(
19
+ active: true,
20
+ name: :bin_hook,
21
+ description: 'initialize repository',
22
+ on_exist: :write) do
23
+
24
+ cd(:lib)
25
+
26
+ add('schema/_.rb.txt', template_file: 'schema_require.rb', shapes: shapes)
27
+ end
28
+
29
+
30
+ # # director.play_actions
31
+ # director.builder.debug
32
+ # director.debug
33
+ # director.k_builder.debug
34
+ end
35
+ end
@@ -0,0 +1,46 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+ director = DrawioDsl::Drawio
4
+ .init(k_builder)
5
+ .diagram(theme: :style_01)
6
+ .page('PgMargin-default') do
7
+ grid_layout(wrap_at: 4)
8
+ square(title: 'Page Margin 50, 50 (Default)')
9
+ circle
10
+ square
11
+ circle
12
+ square
13
+ circle
14
+ square
15
+ circle
16
+ end
17
+ .page('PgMargin-0-0', margin_left: 0, margin_top: 0) do
18
+ grid_layout(wrap_at: 4)
19
+ square(title: 'Page Margin 0, 0')
20
+ circle
21
+ square
22
+ circle
23
+ square
24
+ circle
25
+ square
26
+ circle
27
+ end
28
+ .page('PgMargin-90-70', margin_left: 90, margin_top: 70) do
29
+ grid_layout(wrap_at: 4)
30
+ square(title: 'Page Margin 90, 70')
31
+ circle
32
+ square
33
+ circle
34
+ square
35
+ circle
36
+ square
37
+ circle
38
+ end
39
+
40
+ diagram = DrawioDsl::XmlBuilder.new(director.builder.diagram)
41
+
42
+
43
+ File.write('../spec/.samples/drawio/10-page-margin.xml', diagram.build)
44
+ File.write('../spec/.samples/drawio/10-page-margin.drawio', diagram.build)
45
+ end
46
+ end
@@ -0,0 +1,40 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+
4
+ # KConfig.configuration.drawio.square.w = KConfig.configuration.drawio.square.w / 4
5
+ # KConfig.configuration.drawio.square.h = KConfig.configuration.drawio.square.h / 4
6
+ # KConfig.configuration.drawio.circle.w = KConfig.configuration.drawio.circle.w / 4
7
+ # KConfig.configuration.drawio.circle.h = KConfig.configuration.drawio.circle.h / 4
8
+ # KConfig.configuration.drawio.rectangle.w = KConfig.configuration.drawio.rectangle.w / 4
9
+ # KConfig.configuration.drawio.rectangle.h = KConfig.configuration.drawio.rectangle.h / 4
10
+
11
+ director = DrawioDsl::Drawio
12
+ .init(k_builder)
13
+ .diagram(theme: :style_01)
14
+ .page('Horizontal', margin_left: 0, margin_top: 0) do
15
+ grid_layout(wrap_at: 3, direction: :horizontal)
16
+ circle(title: '01')
17
+ square(title: '02')
18
+ circle(title: '03')
19
+ square(title: '04')
20
+ circle(title: '05')
21
+ square(title: '06')
22
+ circle(title: '07')
23
+ end
24
+ .page('Vertical', margin_left: 0, margin_top: 0) do
25
+ grid_layout(wrap_at: 3, direction: :vertical)
26
+ circle(title: '01')
27
+ square(title: '02')
28
+ circle(title: '03')
29
+ square(title: '04')
30
+ circle(title: '05')
31
+ square(title: '06')
32
+ circle(title: '07')
33
+ end
34
+
35
+ diagram = DrawioDsl::XmlBuilder.new(director.builder.diagram)
36
+
37
+ File.write('../spec/.samples/drawio/15-grid-direction.xml', diagram.build)
38
+ File.write('../spec/.samples/drawio/15-grid-direction.drawio', diagram.build)
39
+ end
40
+ end
@@ -0,0 +1,73 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+
4
+ # KConfig.configuration.drawio.square.w = KConfig.configuration.drawio.square.w / 4
5
+ # KConfig.configuration.drawio.square.h = KConfig.configuration.drawio.square.h / 4
6
+ # KConfig.configuration.drawio.circle.w = KConfig.configuration.drawio.circle.w / 4
7
+ # KConfig.configuration.drawio.circle.h = KConfig.configuration.drawio.circle.h / 4
8
+ # KConfig.configuration.drawio.rectangle.w = KConfig.configuration.drawio.rectangle.w / 4
9
+ # KConfig.configuration.drawio.rectangle.h = KConfig.configuration.drawio.rectangle.h / 4
10
+
11
+ director = DrawioDsl::Drawio
12
+ .init(k_builder,
13
+ on_exist: :skip, # %i[skip write compare]
14
+ on_action: :queue # %i[queue execute]
15
+ )
16
+ .diagram(theme: :style_01)
17
+ .page('Grid-Center', margin_left: 0, margin_top: 0) do
18
+ grid_layout(wrap_at: 3)
19
+ circle
20
+ square
21
+ circle
22
+ square
23
+ circle
24
+ square
25
+ circle
26
+ end
27
+ .page('Grid-Top', margin_left: 0, margin_top: 0) do
28
+ grid_layout(wrap_at: 3, v_align: :top, h_align: :center)
29
+ circle
30
+ square
31
+ circle
32
+ square
33
+ circle
34
+ square
35
+ circle
36
+ end
37
+ .page('Grid-Bottom', margin_left: 0, margin_top: 0) do
38
+ grid_layout(wrap_at: 3, v_align: :bottom, h_align: :center)
39
+ circle
40
+ square
41
+ circle
42
+ square
43
+ circle
44
+ square
45
+ circle
46
+ end
47
+ .page('Grid-Left', margin_left: 0, margin_top: 0) do
48
+ grid_layout(wrap_at: 3, v_align: :center, h_align: :left)
49
+ circle
50
+ square
51
+ circle
52
+ square
53
+ circle
54
+ square
55
+ circle
56
+ end
57
+ .page('Grid-Right', margin_left: 0, margin_top: 0) do
58
+ grid_layout(wrap_at: 3, v_align: :center, h_align: :right)
59
+ circle
60
+ square
61
+ circle
62
+ square
63
+ circle
64
+ square
65
+ circle
66
+ end
67
+
68
+ diagram = DrawioDsl::XmlBuilder.new(director.builder.diagram)
69
+
70
+ File.write('../spec/.samples/drawio/16-grid-alignment.xml', diagram.build)
71
+ File.write('../spec/.samples/drawio/16-grid-alignment.drawio', diagram.build)
72
+ end
73
+ end
@@ -0,0 +1,64 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+
4
+ # :rounded, :shadow, :sketch, :glass
5
+ director = DrawioDsl::Drawio
6
+ .init(k_builder)
7
+ .diagram(theme: :style_06)
8
+ .page('Style-Plain', margin_left: 0, margin_top: 0) do
9
+ grid_layout(wrap_at: 4)
10
+ circle
11
+ square
12
+ circle
13
+ square
14
+ circle
15
+ square
16
+ circle
17
+ end
18
+ .page('Style-Shadow', shadow: 1, margin_left: 0, margin_top: 0) do
19
+ grid_layout(wrap_at: 4)
20
+ circle
21
+ square
22
+ circle
23
+ square
24
+ circle
25
+ square
26
+ circle
27
+ end
28
+ .page('Style-Rounded', rounded: 1, margin_left: 0, margin_top: 0) do
29
+ grid_layout(wrap_at: 4)
30
+ circle
31
+ square
32
+ circle
33
+ square
34
+ circle
35
+ square
36
+ circle
37
+ end
38
+ .page('Style-Glass', glass: 1, margin_left: 0, margin_top: 0) do
39
+ grid_layout(wrap_at: 4)
40
+ circle
41
+ square
42
+ circle
43
+ square
44
+ circle
45
+ square
46
+ circle
47
+ end
48
+ .page('Style-Sketch', sketch: 1, margin_left: 0, margin_top: 0) do
49
+ grid_layout(wrap_at: 4)
50
+ circle
51
+ square
52
+ circle
53
+ square
54
+ circle
55
+ square
56
+ circle
57
+ end
58
+
59
+ diagram = DrawioDsl::XmlBuilder.new(director.builder.diagram)
60
+
61
+ File.write('../spec/.samples/drawio/20-styles.xml', diagram.build)
62
+ File.write('../spec/.samples/drawio/20-styles.drawio', diagram.build)
63
+ end
64
+ end
@@ -0,0 +1,24 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+
4
+ # :rounded, :shadow, :sketch, :glass
5
+ director = DrawioDsl::Drawio
6
+ .init(k_builder)
7
+ .diagram(theme: :style_06)
8
+ .page('Style-Plain', margin_left: 0, margin_top: 0) do
9
+ grid_layout(wrap_at: 5)
10
+
11
+ square(title: 'The quick brown fox jumps over the lazy dog')
12
+ circle(title: 'Mary had a little lamb')
13
+
14
+ KConfig.configuration.drawio.themes.keys.each do |theme|
15
+ random(title: theme.to_s, theme: theme)
16
+ end
17
+ end
18
+
19
+ diagram = DrawioDsl::XmlBuilder.new(director.builder.diagram)
20
+
21
+ File.write('../spec/.samples/drawio/25-themes.xml', diagram.build)
22
+ File.write('../spec/.samples/drawio/25-themes.drawio', diagram.build)
23
+ end
24
+ end
data/.rubocop.yml CHANGED
@@ -83,7 +83,8 @@ Metrics/ParameterLists:
83
83
  Layout/EmptyLineBetweenDefs:
84
84
  Exclude:
85
85
  - "**/spec/**/*"
86
-
86
+ Style/Documentation:
87
+ Enabled: false
87
88
  Lint/AmbiguousBlockAssociation:
88
89
  Exclude:
89
90
  - "**/spec/**/*"
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ # [0.4.0](https://github.com/klueless-io/drawio_dsl/compare/v0.3.0...v0.4.0) (2022-03-05)
2
+
3
+
4
+ ### Features
5
+
6
+ * big refactor, plus 98% test coverage ([0d1075c](https://github.com/klueless-io/drawio_dsl/commit/0d1075c177ff1441246950aaa7306ef774ba6df4))
7
+
8
+ # [0.3.0](https://github.com/klueless-io/drawio_dsl/compare/v0.2.0...v0.3.0) (2022-03-04)
9
+
10
+
11
+ ### Features
12
+
13
+ * add samples for direction, alignment, themes, styles and page margin ([2e9f735](https://github.com/klueless-io/drawio_dsl/commit/2e9f735ba50c9391d7dea64c565ca9c0fb61978a))
14
+
15
+ # [0.2.0](https://github.com/klueless-io/drawio_dsl/compare/v0.1.0...v0.2.0) (2022-03-04)
16
+
17
+
18
+ ### Features
19
+
20
+ * update drawio with grid layout engine ([cc5dc51](https://github.com/klueless-io/drawio_dsl/commit/cc5dc51debfd902a815df704fa2dd77f39f498c7))
21
+
1
22
  # [0.1.0](https://github.com/klueless-io/drawio_dsl/compare/v0.0.1...v0.1.0) (2022-03-02)
2
23
 
3
24
 
@@ -16,38 +16,33 @@ module DrawioDsl
16
16
  include KLog::Logging
17
17
 
18
18
  BaseStyle = Struct.new(:white_space, :html, :rounded, :shadow, :sketch, :glass, keyword_init: true)
19
-
20
- ShapeDefaults = Struct.new(:type, :x, :y, :w, :h, :style_modifiers)
19
+ ShapeDefaults = Struct.new(:type, :x, :y, :w, :h, :style_modifiers, keyword_init: true)
21
20
  ShapeThemeStyle = Struct.new(:fill_color, :stroke_color, :font_color, :gradient, keyword_init: true)
22
21
 
22
+ Shapes = Struct.new(
23
+ :shape,
24
+ :square,
25
+ :rectangle,
26
+ :circle,
27
+ :process,
28
+ :ellipse,
29
+ :diamond,
30
+ :hexagon,
31
+ :cloud,
32
+ :note,
33
+ :callout,
34
+ keyword_init: true
35
+ )
36
+
23
37
  attr_accessor :base_style
24
38
 
25
- # Theme colors
26
39
  attr_accessor :themes
27
-
28
- # Shape shapes
29
- attr_accessor :shape
30
- attr_accessor :square
31
- attr_accessor :rectangle
32
- attr_accessor :circle
33
- attr_accessor :process
34
- attr_accessor :ellipse
35
- attr_accessor :triangle
36
- attr_accessor :parallelogram
37
- attr_accessor :hexagon
40
+ attr_accessor :shapes
38
41
 
39
42
  def initialize
40
43
  @base_style = BaseStyle.new(white_space: :wrap, html: 1, rounded: nil, shadow: nil, sketch: nil, glass: nil)
41
44
 
42
- @shape = ShapeDefaults.new(:shape , 0, 0, 20, 20, '')
43
- @square = ShapeDefaults.new(:square , 0, 0, 160, 160, '')
44
- @rectangle = ShapeDefaults.new(:rectangle , 0, 0, 200, 120, '')
45
- @circle = ShapeDefaults.new(:circle , 0, 0, 160, 160, 'ellipse')
46
- @process = ShapeDefaults.new(:process , 0, 0, 200, 120, 'shape=process')
47
- @ellipse = ShapeDefaults.new(:ellipse , 0, 0, 200, 120, 'ellipse')
48
- @triangle = ShapeDefaults.new(:triangle , 0, 0, 160, 160, 'rhombus')
49
-
50
- @themes = {}
45
+ add_shapes
51
46
  add_themes
52
47
  end
53
48
 
@@ -61,12 +56,30 @@ module DrawioDsl
61
56
 
62
57
  private
63
58
 
59
+ def add_shapes
60
+ @shapes = Shapes.new(
61
+ shape: ShapeDefaults.new(type: :shape , x: 0, y: 0, w: 20, h: 20, style_modifiers: ''),
62
+ square: ShapeDefaults.new(type: :square , x: 0, y: 0, w: 160, h: 160, style_modifiers: ''),
63
+ rectangle: ShapeDefaults.new(type: :rectangle , x: 0, y: 0, w: 200, h: 120, style_modifiers: ''),
64
+ circle: ShapeDefaults.new(type: :circle , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;ellipse'),
65
+ process: ShapeDefaults.new(type: :process , x: 0, y: 0, w: 200, h: 120, style_modifiers: 'double=1;shape=process'),
66
+ ellipse: ShapeDefaults.new(type: :ellipse , x: 0, y: 0, w: 200, h: 120, style_modifiers: 'double=1;ellipse'),
67
+ diamond: ShapeDefaults.new(type: :diamond , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;rhombus'),
68
+ hexagon: ShapeDefaults.new(type: :hexagon , x: 0, y: 0, w: 200, h: 120, style_modifiers: 'double=1;shape=hexagon'),
69
+ cloud: ShapeDefaults.new(type: :cloud , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;shape=cloud'),
70
+ note: ShapeDefaults.new(type: :note , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;shape=note'),
71
+ callout: ShapeDefaults.new(type: :callout , x: 0, y: 0, w: 160, h: 160, style_modifiers: 'double=1;shape=callout')
72
+ )
73
+ end
74
+
64
75
  def add_theme(name, **opts)
65
76
  @themes[name] = ShapeThemeStyle.new(**opts)
66
77
  end
67
78
 
68
79
  # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
69
80
  def add_themes
81
+ @themes = {}
82
+
70
83
  add_theme(:style_01 , fill_color: '#f5f5f5', stroke_color: '#666666', font_color: '#333333')
71
84
  add_theme(:style_02 , fill_color: '#dae8fc', stroke_color: '#6c8ebf', font_color: '#333333')
72
85
  add_theme(:style_03 , fill_color: '#d5e8d4', stroke_color: '#82b366', font_color: '#333333')
@@ -90,26 +103,26 @@ module DrawioDsl
90
103
  add_theme(:style_21 , fill_color: '#647687', stroke_color: '#314354', font_color: '#ffffff')
91
104
  add_theme(:style_22 , fill_color: '#76608a', stroke_color: '#432D57', font_color: '#ffffff')
92
105
  add_theme(:style_23 , fill_color: '#a0522d', stroke_color: '#6D1F00', font_color: '#ffffff')
93
- add_theme(:style_24 , fill_color: '#fad7ac', stroke_color: '#b46504')
94
- add_theme(:style_25 , fill_color: '#fad9d5', stroke_color: '#ae4132')
95
- add_theme(:style_26 , fill_color: '#b0e3e6', stroke_color: '#0e8088')
96
- add_theme(:style_27 , fill_color: '#b1ddf0', stroke_color: '#10739e')
97
- add_theme(:style_28 , fill_color: '#d0cee2', stroke_color: '#56517e')
98
- add_theme(:style_29 , fill_color: '#bac8d3', stroke_color: '#23445d')
99
- add_theme(:style_30 , fill_color: '#f5f5f5', stroke_color: '#666666', gradient: '#b3b3b3')
100
- add_theme(:style_31 , fill_color: '#dae8fc', stroke_color: '#6c8ebf', gradient: '#7ea6e0')
101
- add_theme(:style_32 , fill_color: '#d5e8d4', stroke_color: '#82b366', gradient: '#97d077')
102
- add_theme(:style_33 , fill_color: '#ffcd28', stroke_color: '#d79b00', gradient: '#ffa500')
103
- add_theme(:style_34 , fill_color: '#fff2cc', stroke_color: '#d6b656', gradient: '#ffd966')
104
- add_theme(:style_35 , fill_color: '#f8cecc', stroke_color: '#b85450', gradient: '#ea6b66')
105
- add_theme(:style_36 , fill_color: '#e6d0de', stroke_color: '#996185', gradient: '#d5739d')
106
- add_theme(:style_37 , fill_color: '#eeeeee', stroke_color: '#36393d')
107
- add_theme(:style_38 , fill_color: '#f9f7ed', stroke_color: '#36393d')
108
- add_theme(:style_39 , fill_color: '#ffcc99', stroke_color: '#36393d')
109
- add_theme(:style_40 , fill_color: '#cce5ff', stroke_color: '#36393d')
110
- add_theme(:style_41 , fill_color: '#ffff88', stroke_color: '#36393d')
111
- add_theme(:style_42 , fill_color: '#cdeb8b', stroke_color: '#36393d')
112
- add_theme(:style_43 , fill_color: '#ffcccc', stroke_color: '#36393d')
106
+ add_theme(:style_24 , fill_color: '#fad7ac', stroke_color: '#b46504', font_color: '#333333')
107
+ add_theme(:style_25 , fill_color: '#fad9d5', stroke_color: '#ae4132', font_color: '#333333')
108
+ add_theme(:style_26 , fill_color: '#b0e3e6', stroke_color: '#0e8088', font_color: '#000000')
109
+ add_theme(:style_27 , fill_color: '#b1ddf0', stroke_color: '#10739e', font_color: '#000000')
110
+ add_theme(:style_28 , fill_color: '#d0cee2', stroke_color: '#56517e', font_color: '#000000')
111
+ add_theme(:style_29 , fill_color: '#bac8d3', stroke_color: '#23445d', font_color: '#000000')
112
+ add_theme(:style_30 , fill_color: '#f5f5f5', stroke_color: '#666666', font_color: '#000000', gradient: '#b3b3b3')
113
+ add_theme(:style_31 , fill_color: '#dae8fc', stroke_color: '#6c8ebf', font_color: '#000000', gradient: '#7ea6e0')
114
+ add_theme(:style_32 , fill_color: '#d5e8d4', stroke_color: '#82b366', font_color: '#000000', gradient: '#97d077')
115
+ add_theme(:style_33 , fill_color: '#ffcd28', stroke_color: '#d79b00', font_color: '#000000', gradient: '#ffa500')
116
+ add_theme(:style_34 , fill_color: '#fff2cc', stroke_color: '#d6b656', font_color: '#000000', gradient: '#ffd966')
117
+ add_theme(:style_35 , fill_color: '#f8cecc', stroke_color: '#b85450', font_color: '#000000', gradient: '#ea6b66')
118
+ add_theme(:style_36 , fill_color: '#e6d0de', stroke_color: '#996185', font_color: '#000000', gradient: '#d5739d')
119
+ add_theme(:style_37 , fill_color: '#eeeeee', stroke_color: '#36393d', font_color: '#000000')
120
+ add_theme(:style_38 , fill_color: '#f9f7ed', stroke_color: '#36393d', font_color: '#000000')
121
+ add_theme(:style_39 , fill_color: '#ffcc99', stroke_color: '#36393d', font_color: '#000000')
122
+ add_theme(:style_40 , fill_color: '#cce5ff', stroke_color: '#36393d', font_color: '#000000')
123
+ add_theme(:style_41 , fill_color: '#ffff88', stroke_color: '#36393d', font_color: '#000000')
124
+ add_theme(:style_42 , fill_color: '#cdeb8b', stroke_color: '#36393d', font_color: '#000000')
125
+ add_theme(:style_43 , fill_color: '#ffcccc', stroke_color: '#36393d', font_color: '#000000')
113
126
  end
114
127
  # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
115
128
  end