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.
- checksums.yaml +4 -4
- data/.builders/.templates/basic/schema_require.rb +3 -1
- data/.builders/generators/project_plans/drawio_dsl.rb +19 -15
- data/.builders/generators/project_plans/k_doc.rb +39 -0
- data/.builders/generators/sample_diagrams/05-samples.rb +23 -0
- data/.builders/generators/sample_diagrams/10-page-margin.rb +4 -8
- data/.builders/generators/sample_diagrams/15-grid-direction.rb +9 -7
- data/.builders/generators/sample_diagrams/16-grid-alignment.rb +6 -9
- data/.builders/generators/sample_diagrams/20-styles.rb +43 -45
- data/.builders/generators/sample_diagrams/25-themes.rb +21 -8
- data/.builders/generators/sample_diagrams/50-willoughby-council.rb +5 -6
- data/.rubocop.yml +3 -1
- data/CHANGELOG.md +22 -0
- data/README.md +6 -3
- data/docs/project_done.svg +1 -1
- data/docs/project_in_progress.svg +1 -1
- data/docs/project_todo.svg +1 -1
- data/docs/samples/grid-alignment-center.svg +3 -0
- data/docs/samples/grid-alignment.svg +3 -0
- data/docs/samples/grid-direction-horizontal.svg +3 -0
- data/docs/samples/grid-direction-vertical.svg +3 -0
- data/docs/samples/samples.md +48 -0
- data/docs/samples/samples.svg +3 -0
- data/docs/samples/styles-glass.svg +3 -0
- data/docs/samples/styles-plain.svg +3 -0
- data/docs/samples/styles-rounded.svg +3 -0
- data/docs/samples/styles-shadow.svg +3 -0
- data/docs/samples/styles-sketch.svg +3 -0
- data/docs/samples/themes-circle.svg +3 -0
- data/docs/samples/themes-random.svg +3 -0
- data/docs/samples/themes-square.svg +3 -0
- data/docs/samples/willoughby-council.svg +3 -0
- data/lib/drawio_dsl/drawio.rb +16 -0
- data/lib/drawio_dsl/schema/_.rb +2 -0
- data/lib/drawio_dsl/schema/node.rb +6 -0
- data/lib/drawio_dsl/schema/page.rb +4 -0
- data/lib/drawio_dsl/schema/virtual/anchor.rb +24 -0
- data/lib/drawio_dsl/version.rb +1 -1
- data/lib/drawio_dsl/xml_builder.rb +6 -5
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +20 -3
- data/.builders/generators/sample_diagrams/30-shapes.rb +0 -23
data/lib/drawio_dsl/drawio.rb
CHANGED
@@ -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.
|
data/lib/drawio_dsl/schema/_.rb
CHANGED
@@ -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
|
data/lib/drawio_dsl/version.rb
CHANGED
@@ -28,7 +28,7 @@ module DrawioDsl
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
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
|
-
|
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
|
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.
|
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.
|
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
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
|
+
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-
|
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
|