drawio_dsl 0.5.4 → 0.5.7

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.templates/basic/schema_require.rb +3 -1
  3. data/.builders/generators/project_plans/drawio_dsl.rb +19 -15
  4. data/.builders/generators/project_plans/k_doc.rb +39 -0
  5. data/.builders/generators/sample_diagrams/05-samples.rb +23 -0
  6. data/.builders/generators/sample_diagrams/10-page-margin.rb +4 -8
  7. data/.builders/generators/sample_diagrams/15-grid-direction.rb +9 -7
  8. data/.builders/generators/sample_diagrams/16-grid-alignment.rb +6 -9
  9. data/.builders/generators/sample_diagrams/20-styles.rb +43 -45
  10. data/.builders/generators/sample_diagrams/25-themes.rb +21 -8
  11. data/.builders/generators/sample_diagrams/50-willoughby-council.rb +5 -6
  12. data/.rubocop.yml +3 -1
  13. data/CHANGELOG.md +22 -0
  14. data/README.md +6 -3
  15. data/docs/project_done.svg +1 -1
  16. data/docs/project_in_progress.svg +1 -1
  17. data/docs/project_todo.svg +1 -1
  18. data/docs/samples/grid-alignment-center.svg +3 -0
  19. data/docs/samples/grid-alignment.svg +3 -0
  20. data/docs/samples/grid-direction-horizontal.svg +3 -0
  21. data/docs/samples/grid-direction-vertical.svg +3 -0
  22. data/docs/samples/samples.md +48 -0
  23. data/docs/samples/samples.svg +3 -0
  24. data/docs/samples/styles-glass.svg +3 -0
  25. data/docs/samples/styles-plain.svg +3 -0
  26. data/docs/samples/styles-rounded.svg +3 -0
  27. data/docs/samples/styles-shadow.svg +3 -0
  28. data/docs/samples/styles-sketch.svg +3 -0
  29. data/docs/samples/themes-circle.svg +3 -0
  30. data/docs/samples/themes-random.svg +3 -0
  31. data/docs/samples/themes-square.svg +3 -0
  32. data/docs/samples/willoughby-council.svg +3 -0
  33. data/lib/drawio_dsl/drawio.rb +16 -0
  34. data/lib/drawio_dsl/schema/_.rb +2 -0
  35. data/lib/drawio_dsl/schema/node.rb +6 -0
  36. data/lib/drawio_dsl/schema/page.rb +4 -0
  37. data/lib/drawio_dsl/schema/virtual/anchor.rb +24 -0
  38. data/lib/drawio_dsl/version.rb +1 -1
  39. data/lib/drawio_dsl/xml_builder.rb +6 -5
  40. data/package-lock.json +2 -2
  41. data/package.json +1 -1
  42. metadata +20 -3
  43. data/.builders/generators/sample_diagrams/30-shapes.rb +0 -23
@@ -27,6 +27,7 @@ module DrawioDsl
27
27
 
28
28
  add(file_name, content: diagram.build, **opts)
29
29
 
30
+ # if last_save_file_name is nil then you are not in execute mode
30
31
  @last_save_file_name = k_builder.last_output_file
31
32
 
32
33
  self
@@ -50,6 +51,21 @@ module DrawioDsl
50
51
 
51
52
  self
52
53
  end
54
+
55
+ def export_png(output_file_name, page: 1)
56
+ return unless last_save_file_name
57
+ return unless File.exist?(last_save_file_name)
58
+
59
+ page -= 1 # use zero based index
60
+
61
+ output_file_name = "#{output_file_name}.png" unless output_file_name.end_with?('.png')
62
+
63
+ command = "/Applications/draw.io.app/Contents/MacOS/draw.io '#{last_save_file_name}' -p #{page} -x -o #{output_file_name}"
64
+
65
+ run_command(command)
66
+
67
+ self
68
+ end
53
69
  end
54
70
 
55
71
  # DrawioDsl::DrawioPage is created when you call .page on the draw-io DSL.
@@ -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'
@@ -7,11 +7,13 @@ 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
11
12
 
12
13
  def initialize(page, **args)
13
14
  @page = page
14
15
  @id = args[:id]
16
+ @parent = args[:parent]
15
17
  @classification = args[:classification] || :unknown
16
18
  end
17
19
 
@@ -22,6 +24,10 @@ module DrawioDsl
22
24
  }
23
25
  end
24
26
 
27
+ def root?
28
+ parent.nil?
29
+ end
30
+
25
31
  # :nocov:
26
32
  # rubocop:disable Metrics/AbcSize
27
33
  def debug(format: :detail)
@@ -87,6 +87,10 @@ module DrawioDsl
87
87
  end
88
88
 
89
89
  @nodes = NodeList.new # []
90
+
91
+ # add anchor nodes
92
+ @nodes.add(DrawioDsl::Schema::Anchor.new(self, id: "page_root_#{id}"))
93
+ @nodes.add(DrawioDsl::Schema::Anchor.new(self, id: "node_root_#{id}"))
90
94
  end
91
95
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
92
96
 
@@ -0,0 +1,24 @@
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
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DrawioDsl
4
- VERSION = '0.5.4'
4
+ VERSION = '0.5.7'
5
5
  end
@@ -28,7 +28,7 @@ module DrawioDsl
28
28
  end
29
29
  end
30
30
 
31
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength
31
+ # rubocop:disable Metrics/MethodLength, 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,16 @@ 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")
53
+ # xml.mxCell(id: "#{page.id}-A")
54
+ # xml.mxCell(id: "#{page.id}-B", parent: "#{page.id}-A")
55
55
  page.nodes.all.each do |node|
56
- node.as_xml(xml) if node.classification == :shape
56
+ # puts node.classification
57
+ node.as_xml(xml) if %i[shape anchor].include?(node.classification)
57
58
  end
58
59
  end
59
60
  end
60
61
  end
61
62
  end
62
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength
63
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
63
64
  end
64
65
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "drawio_dsl",
3
- "version": "0.5.4",
3
+ "version": "0.5.7",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "drawio_dsl",
9
- "version": "0.5.4",
9
+ "version": "0.5.7",
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.4",
3
+ "version": "0.5.7",
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.4
4
+ version: 0.5.7
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-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -86,12 +86,13 @@ files:
86
86
  - ".builders/generators/01-bootstrap.rb"
87
87
  - ".builders/generators/02-generate-app.rb"
88
88
  - ".builders/generators/project_plans/drawio_dsl.rb"
89
+ - ".builders/generators/project_plans/k_doc.rb"
90
+ - ".builders/generators/sample_diagrams/05-samples.rb"
89
91
  - ".builders/generators/sample_diagrams/10-page-margin.rb"
90
92
  - ".builders/generators/sample_diagrams/15-grid-direction.rb"
91
93
  - ".builders/generators/sample_diagrams/16-grid-alignment.rb"
92
94
  - ".builders/generators/sample_diagrams/20-styles.rb"
93
95
  - ".builders/generators/sample_diagrams/25-themes.rb"
94
- - ".builders/generators/sample_diagrams/30-shapes.rb"
95
96
  - ".builders/generators/sample_diagrams/50-willoughby-council.rb"
96
97
  - ".releaserc.json"
97
98
  - ".rspec"
@@ -110,6 +111,21 @@ files:
110
111
  - docs/project_done.svg
111
112
  - docs/project_in_progress.svg
112
113
  - docs/project_todo.svg
114
+ - docs/samples/grid-alignment-center.svg
115
+ - docs/samples/grid-alignment.svg
116
+ - docs/samples/grid-direction-horizontal.svg
117
+ - docs/samples/grid-direction-vertical.svg
118
+ - docs/samples/samples.md
119
+ - docs/samples/samples.svg
120
+ - docs/samples/styles-glass.svg
121
+ - docs/samples/styles-plain.svg
122
+ - docs/samples/styles-rounded.svg
123
+ - docs/samples/styles-shadow.svg
124
+ - docs/samples/styles-sketch.svg
125
+ - docs/samples/themes-circle.svg
126
+ - docs/samples/themes-random.svg
127
+ - docs/samples/themes-square.svg
128
+ - docs/samples/willoughby-council.svg
113
129
  - lib/drawio_dsl.rb
114
130
  - lib/drawio_dsl/configuration.rb
115
131
  - lib/drawio_dsl/configuration_extension.rb
@@ -168,6 +184,7 @@ files:
168
184
  - lib/drawio_dsl/schema/shapes/step.rb
169
185
  - lib/drawio_dsl/schema/shapes/tick.rb
170
186
  - lib/drawio_dsl/schema/shapes/triangle.rb
187
+ - lib/drawio_dsl/schema/virtual/anchor.rb
171
188
  - lib/drawio_dsl/version.rb
172
189
  - lib/drawio_dsl/xml_builder.rb
173
190
  - package-lock.json
@@ -1,23 +0,0 @@
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('Shapes', margin_left: 0, margin_top: 0) do
9
- grid_layout(wrap_at: 5)
10
-
11
- KConfig.configuration.drawio.shapes.members.each do |shape|
12
- next if shape == :shape
13
-
14
- send(shape, title: shape.to_s, shape: shape)
15
- end
16
- end
17
-
18
- diagram = DrawioDsl::XmlBuilder.new(director.builder.diagram)
19
-
20
- File.write('../spec/.samples/drawio/30-shapes.xml', diagram.build)
21
- File.write('../spec/.samples/drawio/30-shapes.drawio', diagram.build)
22
- end
23
- end