drawio_dsl 0.6.0 → 0.8.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.
- checksums.yaml +4 -4
- data/.builders/.data/shapes.json +58 -22
- data/.builders/.templates/basic/dom_builder_shapes.rb +3 -2
- data/.builders/.templates/basic/drawio_shapes.rb +2 -2
- data/.builders/blueprint/shapes.rb +25 -4
- data/.builders/generators/project-plan.rb +72 -0
- data/.builders/generators/sample_diagrams/05-samples.rb +19 -6
- data/.builders/generators/sample_diagrams/30-html-shapes.rb +48 -0
- data/.builders/generators/sample_diagrams/35-ids-and-arrows.rb +20 -0
- data/CHANGELOG.md +28 -0
- data/docs/project-plan/project.drawio +128 -0
- data/docs/project-plan/project_done.svg +3 -0
- data/docs/project-plan/project_in_progress.svg +3 -0
- data/docs/project-plan/project_todo.svg +3 -0
- data/docs/project-plan.md +3 -3
- data/docs/samples/html-shapes.svg +3 -0
- data/docs/samples/samples.md +4 -0
- data/docs/samples/styles-glass.svg +1 -1
- data/docs/samples/styles-plain.svg +1 -1
- data/docs/samples/styles-rounded.svg +1 -1
- data/docs/samples/styles-shadow.svg +1 -1
- data/docs/samples/styles-sketch.svg +1 -1
- data/docs/samples/themes-random.svg +1 -1
- data/lib/drawio_dsl/configuration_shapes.rb +14 -8
- data/lib/drawio_dsl/dom_builder_shapes.rb +137 -82
- data/lib/drawio_dsl/drawio_shapes.rb +114 -96
- data/lib/drawio_dsl/formatters/_.rb +8 -0
- data/lib/drawio_dsl/formatters/base_formatter.rb +24 -0
- data/lib/drawio_dsl/formatters/factory.rb +33 -0
- data/lib/drawio_dsl/formatters/html_builder.rb +84 -0
- data/lib/drawio_dsl/formatters/interface_formatter.rb +55 -0
- data/lib/drawio_dsl/formatters/klass_formatter.rb +54 -0
- data/lib/drawio_dsl/formatters/style_builder.rb +63 -0
- data/lib/drawio_dsl/schema/_.rb +7 -4
- data/lib/drawio_dsl/schema/shapes/interface.rb +9 -0
- data/lib/drawio_dsl/schema/shapes/klass.rb +9 -0
- data/lib/drawio_dsl/schema/shapes/shape.rb +20 -8
- data/lib/drawio_dsl/schema/shapes/todo.rb +9 -0
- data/lib/drawio_dsl/version.rb +1 -1
- data/lib/drawio_dsl.rb +1 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +20 -7
- data/.builders/generators/project_plans/drawio_dsl.rb +0 -63
- data/.builders/generators/project_plans/k_doc.rb +0 -39
- data/docs/project_done.svg +0 -3
- data/docs/project_in_progress.svg +0 -3
- data/docs/project_todo.svg +0 -3
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Work with HTML formatters to DrawIO shapes
|
4
|
+
module DrawioDsl
|
5
|
+
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
|
+
module Formatters
|
7
|
+
# Create an instance of a HTML formatter on the shape
|
8
|
+
class BaseFormatter
|
9
|
+
attr_reader :html
|
10
|
+
|
11
|
+
def initialize(element_style_defaults = {})
|
12
|
+
@html = DrawioDsl::Formatters::HtmlBuilder.new(element_style_defaults)
|
13
|
+
end
|
14
|
+
|
15
|
+
def empty?
|
16
|
+
html.empty?
|
17
|
+
end
|
18
|
+
|
19
|
+
def as_html(new_line: false)
|
20
|
+
html.as_html(new_line: new_line)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Work with HTML formatters to DrawIO shapes
|
4
|
+
module DrawioDsl
|
5
|
+
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
|
+
module Formatters
|
7
|
+
# Create an instance of a HTML formatter on the shape
|
8
|
+
module Factory
|
9
|
+
include KLog::Logging
|
10
|
+
|
11
|
+
FORMATTERS = {
|
12
|
+
klass: DrawioDsl::Formatters::KlassFormatter,
|
13
|
+
class: DrawioDsl::Formatters::KlassFormatter, # alias for klass
|
14
|
+
interface: DrawioDsl::Formatters::InterfaceFormatter
|
15
|
+
}.freeze
|
16
|
+
|
17
|
+
def format_instance(type)
|
18
|
+
unless FORMATTERS.key?(type)
|
19
|
+
log.error "Unknown formatter type: #{type}"
|
20
|
+
@formatter = nil
|
21
|
+
return formatter
|
22
|
+
end
|
23
|
+
|
24
|
+
@formatter = FORMATTERS[type].new
|
25
|
+
formatter
|
26
|
+
end
|
27
|
+
|
28
|
+
def formatter
|
29
|
+
@formatter ||= DrawioDsl::Formatters::BaseFormatter.new
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Work with HTML formatters to DrawIO shapes
|
4
|
+
module DrawioDsl
|
5
|
+
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
|
+
module Formatters
|
7
|
+
# Create an instance of a HTML formatter on the shape
|
8
|
+
class HtmlBuilder
|
9
|
+
attr_reader :element_style_defaults
|
10
|
+
|
11
|
+
def initialize(element_style_defaults = {})
|
12
|
+
@element_style_defaults = element_style_defaults
|
13
|
+
end
|
14
|
+
|
15
|
+
def default_for(tag)
|
16
|
+
element_style_defaults[tag] || {}
|
17
|
+
end
|
18
|
+
|
19
|
+
def style_for(tag, **opts)
|
20
|
+
defaults = default_for(tag)
|
21
|
+
DrawioDsl::Formatters::StyleBuilder.new(**defaults).customize(**opts).style_attribute
|
22
|
+
end
|
23
|
+
|
24
|
+
def empty?
|
25
|
+
build_lines.empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
def exist?
|
29
|
+
!empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def as_html(new_line: false)
|
33
|
+
new_line ? build_lines.join("\n") : build_lines.join
|
34
|
+
end
|
35
|
+
|
36
|
+
def hr(size: 1)
|
37
|
+
add_line("<hr size=\"#{size}\"/>")
|
38
|
+
end
|
39
|
+
|
40
|
+
def b(content, **opts)
|
41
|
+
add_line("<b#{style_for(:b, **opts)}>#{content}</b>")
|
42
|
+
end
|
43
|
+
|
44
|
+
def p(content, **opts)
|
45
|
+
# style_parts = %w[margin:0px margin-top:4px]
|
46
|
+
# style_parts << "text-align:#{opts[:text_align]}" if opts[:text_align]
|
47
|
+
# style=\"#{style_parts.join(';')}\"
|
48
|
+
add_line("<p#{style_for(:p, **opts)}>#{content}</p>")
|
49
|
+
end
|
50
|
+
|
51
|
+
def add_line(line)
|
52
|
+
lines << line
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_placeholder(group_key)
|
56
|
+
lines << group_key
|
57
|
+
end
|
58
|
+
|
59
|
+
def group(key)
|
60
|
+
groups[key] ||= DrawioDsl::Formatters::HtmlBuilder.new(element_style_defaults)
|
61
|
+
end
|
62
|
+
|
63
|
+
def build_lines
|
64
|
+
lines.flat_map do |line|
|
65
|
+
if line.is_a?(Symbol)
|
66
|
+
group(line).build_lines
|
67
|
+
else
|
68
|
+
line
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def lines
|
76
|
+
@lines ||= []
|
77
|
+
end
|
78
|
+
|
79
|
+
def groups
|
80
|
+
@groups ||= {}
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Work with HTML formatters to DrawIO shapes
|
4
|
+
module DrawioDsl
|
5
|
+
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
|
+
module Formatters
|
7
|
+
# Create an instance of a HTML formatter on the shape
|
8
|
+
class InterfaceFormatter < BaseFormatter
|
9
|
+
def initialize
|
10
|
+
super({ p: { margin: '0px', margin_left: '4px', margin_top: '4px' } })
|
11
|
+
end
|
12
|
+
|
13
|
+
def header(name, description: nil, interface_type: 'Interface')
|
14
|
+
html.p("<i><< #{interface_type} >></i>", text_align: :center)
|
15
|
+
html.p("<b>#{name}</b>", text_align: :center)
|
16
|
+
html.hr
|
17
|
+
|
18
|
+
html.group(:description).p(description) if description
|
19
|
+
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def field(name, type: nil)
|
24
|
+
value = if type
|
25
|
+
"#{name}: #{type}"
|
26
|
+
else
|
27
|
+
name
|
28
|
+
end
|
29
|
+
html.group(:fields).p(value)
|
30
|
+
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def method(name, type: nil)
|
35
|
+
value = if type
|
36
|
+
"#{name}() : #{type}"
|
37
|
+
else
|
38
|
+
"#{name}()"
|
39
|
+
end
|
40
|
+
html.group(:methods).p(value)
|
41
|
+
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def as_html(new_line: false)
|
46
|
+
html.add_placeholder(:fields)
|
47
|
+
html.add_placeholder(:methods)
|
48
|
+
|
49
|
+
html.group(:fields).hr if html.group(:fields).exist? && html.group(:methods).exist?
|
50
|
+
|
51
|
+
html.as_html(new_line: new_line)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Work with HTML formatters to DrawIO shapes
|
4
|
+
module DrawioDsl
|
5
|
+
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
|
+
module Formatters
|
7
|
+
# Create an instance of a HTML formatter on the shape
|
8
|
+
class KlassFormatter < BaseFormatter
|
9
|
+
def initialize
|
10
|
+
super({ p: { margin: '0px', margin_left: '4px', margin_top: '4px' } })
|
11
|
+
end
|
12
|
+
|
13
|
+
def header(name, description: nil)
|
14
|
+
html.p("<b>#{name}</b>", text_align: :center)
|
15
|
+
html.hr
|
16
|
+
|
17
|
+
html.group(:description).p(description) if description
|
18
|
+
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
def field(name, type: nil)
|
23
|
+
value = if type
|
24
|
+
"#{name}: #{type}"
|
25
|
+
else
|
26
|
+
name
|
27
|
+
end
|
28
|
+
html.group(:fields).p(value)
|
29
|
+
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def method(name, type: nil)
|
34
|
+
value = if type
|
35
|
+
"#{name}() : #{type}"
|
36
|
+
else
|
37
|
+
"#{name}()"
|
38
|
+
end
|
39
|
+
html.group(:methods).p(value)
|
40
|
+
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
44
|
+
def as_html(new_line: false)
|
45
|
+
html.add_placeholder(:fields)
|
46
|
+
html.add_placeholder(:methods)
|
47
|
+
|
48
|
+
html.group(:fields).hr if html.group(:fields).exist? && html.group(:methods).exist?
|
49
|
+
|
50
|
+
html.as_html(new_line: new_line)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Work with HTML formatters to DrawIO shapes
|
4
|
+
module DrawioDsl
|
5
|
+
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
|
+
module Formatters
|
7
|
+
# Create an instance of a HTML formatter on the shape
|
8
|
+
class StyleBuilder
|
9
|
+
MAPPINGS = {
|
10
|
+
margin: 'margin',
|
11
|
+
margin_top: 'margin-top',
|
12
|
+
margin_bottom: 'margin-bottom',
|
13
|
+
margin_left: 'margin-left',
|
14
|
+
margin_right: 'margin-right',
|
15
|
+
padding: 'padding',
|
16
|
+
padding_top: 'padding-top',
|
17
|
+
padding_bottom: 'padding-bottom',
|
18
|
+
padding_left: 'padding-left',
|
19
|
+
padding_right: 'padding-right',
|
20
|
+
text_align: 'text-align',
|
21
|
+
font_size: 'font-size',
|
22
|
+
font_weight: 'font-weight',
|
23
|
+
font_style: 'font-style',
|
24
|
+
font_family: 'font-family',
|
25
|
+
color: 'color'
|
26
|
+
}.freeze
|
27
|
+
|
28
|
+
attr_reader :defaults
|
29
|
+
attr_reader :custom
|
30
|
+
|
31
|
+
def initialize(**opts)
|
32
|
+
@style_parts = []
|
33
|
+
@defaults = opts
|
34
|
+
@custom = {}
|
35
|
+
end
|
36
|
+
|
37
|
+
def customize(**opts)
|
38
|
+
@custom = opts
|
39
|
+
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
def style
|
44
|
+
build
|
45
|
+
@style_parts.join(';')
|
46
|
+
end
|
47
|
+
|
48
|
+
def style_attribute
|
49
|
+
style_value = style
|
50
|
+
style_value.empty? ? nil : " style=\"#{style_value}\""
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def build
|
56
|
+
defaults.merge(custom).each do |key, value|
|
57
|
+
style_key = MAPPINGS[key]
|
58
|
+
@style_parts << "#{style_key}:#{value}" if style_key
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/drawio_dsl/schema/_.rb
CHANGED
@@ -27,16 +27,18 @@ require_relative 'shapes/callout3'
|
|
27
27
|
require_relative 'shapes/callout4'
|
28
28
|
require_relative 'shapes/circle'
|
29
29
|
require_relative 'shapes/cloud'
|
30
|
+
require_relative 'shapes/container'
|
31
|
+
require_relative 'shapes/container2'
|
32
|
+
require_relative 'shapes/container3'
|
33
|
+
require_relative 'shapes/container4'
|
30
34
|
require_relative 'shapes/cross'
|
31
35
|
require_relative 'shapes/envelop'
|
32
36
|
require_relative 'shapes/diamond'
|
33
37
|
require_relative 'shapes/document'
|
34
38
|
require_relative 'shapes/ellipse'
|
35
39
|
require_relative 'shapes/hexagon'
|
36
|
-
require_relative 'shapes/
|
37
|
-
require_relative 'shapes/
|
38
|
-
require_relative 'shapes/container3'
|
39
|
-
require_relative 'shapes/container4'
|
40
|
+
require_relative 'shapes/interface'
|
41
|
+
require_relative 'shapes/klass'
|
40
42
|
require_relative 'shapes/note'
|
41
43
|
require_relative 'shapes/process'
|
42
44
|
require_relative 'shapes/rectangle'
|
@@ -44,6 +46,7 @@ require_relative 'shapes/rectangle2'
|
|
44
46
|
require_relative 'shapes/square'
|
45
47
|
require_relative 'shapes/step'
|
46
48
|
require_relative 'shapes/tick'
|
49
|
+
require_relative 'shapes/todo'
|
47
50
|
require_relative 'shapes/face'
|
48
51
|
require_relative 'shapes/triangle'
|
49
52
|
require_relative 'shapes/embed_row'
|
@@ -4,18 +4,20 @@ module DrawioDsl
|
|
4
4
|
module Schema
|
5
5
|
# Shape is a graphical element, it can be a shape, a text, or a group (todo)
|
6
6
|
class Shape < Node
|
7
|
+
include DrawioDsl::Formatters::Factory
|
8
|
+
|
7
9
|
class << self
|
10
|
+
attr_reader :shape_key
|
8
11
|
attr_reader :shape_defaults
|
9
12
|
|
10
|
-
def configure_shape(
|
11
|
-
unless KConfig.configuration.drawio.shapes.members.include?(
|
12
|
-
puts "Shape #{
|
13
|
+
def configure_shape(key)
|
14
|
+
unless KConfig.configuration.drawio.shapes.members.include?(key)
|
15
|
+
puts "Shape #{key} not found in configuration"
|
13
16
|
return
|
14
17
|
end
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
@shape_defaults = config.clone
|
19
|
+
@shape_key = key
|
20
|
+
@shape_defaults = KConfig.configuration.drawio.shapes[key].clone
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
@@ -23,6 +25,7 @@ module DrawioDsl
|
|
23
25
|
|
24
26
|
attr_accessor :theme
|
25
27
|
attr_accessor :title
|
28
|
+
attr_accessor :value
|
26
29
|
|
27
30
|
# The style of the element, these will derive from the page style if not provided
|
28
31
|
attr_accessor :white_space
|
@@ -44,11 +47,15 @@ module DrawioDsl
|
|
44
47
|
attr_accessor :h
|
45
48
|
attr_accessor :style_modifiers
|
46
49
|
|
47
|
-
def initialize(page, **args)
|
50
|
+
def initialize(page, **args, &block)
|
48
51
|
args[:classification] = :shape
|
49
52
|
super(page, **args)
|
50
53
|
|
51
54
|
apply_defaults(args)
|
55
|
+
|
56
|
+
instance_eval(&block) if block_given?
|
57
|
+
|
58
|
+
@value = formatter.empty? ? title : formatter.as_html
|
52
59
|
end
|
53
60
|
|
54
61
|
def shape_defaults
|
@@ -82,6 +89,11 @@ module DrawioDsl
|
|
82
89
|
@font_color = args[:font_color] || theme_palette.font_color
|
83
90
|
end
|
84
91
|
|
92
|
+
def format(type = nil)
|
93
|
+
type ||= self.class.shape_key
|
94
|
+
format_instance(type)
|
95
|
+
end
|
96
|
+
|
85
97
|
def style
|
86
98
|
key_values = []
|
87
99
|
key_values << "whiteSpace=#{white_space}" if white_space
|
@@ -101,7 +113,7 @@ module DrawioDsl
|
|
101
113
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
102
114
|
|
103
115
|
def as_xml(xml)
|
104
|
-
xml.mxCell(id: id, value:
|
116
|
+
xml.mxCell(id: id, value: value, style: style, vertex: 1, parent: parent&.id) do
|
105
117
|
xml.mxGeometry(x: x, y: y, width: w, height: h, as: 'geometry')
|
106
118
|
end
|
107
119
|
end
|
data/lib/drawio_dsl/version.rb
CHANGED
data/lib/drawio_dsl.rb
CHANGED
@@ -12,6 +12,7 @@ require_relative 'drawio_dsl/configuration_shapes'
|
|
12
12
|
require_relative 'drawio_dsl/configuration_themes'
|
13
13
|
require_relative 'drawio_dsl/configuration'
|
14
14
|
require_relative 'drawio_dsl/version'
|
15
|
+
require_relative 'drawio_dsl/formatters/_'
|
15
16
|
require_relative 'drawio_dsl/schema/_'
|
16
17
|
require_relative 'drawio_dsl/dom_builder_shapes'
|
17
18
|
require_relative 'drawio_dsl/dom_builder'
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "drawio_dsl",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.8.1",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "drawio_dsl",
|
9
|
-
"version": "0.
|
9
|
+
"version": "0.8.1",
|
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.
|
4
|
+
version: 0.8.1
|
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-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: k_config
|
@@ -88,14 +88,15 @@ files:
|
|
88
88
|
- ".builders/generators/02-generate-app.rb"
|
89
89
|
- ".builders/generators/10-transform-drawio-js.rb"
|
90
90
|
- ".builders/generators/20-drawio-extensions.rb"
|
91
|
-
- ".builders/generators/
|
92
|
-
- ".builders/generators/project_plans/k_doc.rb"
|
91
|
+
- ".builders/generators/project-plan.rb"
|
93
92
|
- ".builders/generators/sample_diagrams/05-samples.rb"
|
94
93
|
- ".builders/generators/sample_diagrams/10-page-margin.rb"
|
95
94
|
- ".builders/generators/sample_diagrams/15-grid-direction.rb"
|
96
95
|
- ".builders/generators/sample_diagrams/16-grid-alignment.rb"
|
97
96
|
- ".builders/generators/sample_diagrams/20-styles.rb"
|
98
97
|
- ".builders/generators/sample_diagrams/25-themes.rb"
|
98
|
+
- ".builders/generators/sample_diagrams/30-html-shapes.rb"
|
99
|
+
- ".builders/generators/sample_diagrams/35-ids-and-arrows.rb"
|
99
100
|
- ".builders/generators/sample_diagrams/50-willoughby-council.rb"
|
100
101
|
- ".releaserc.json"
|
101
102
|
- ".rspec"
|
@@ -265,13 +266,15 @@ files:
|
|
265
266
|
- docs/extensions/venn_plain.svg
|
266
267
|
- docs/extensions/vessels.svg
|
267
268
|
- docs/project-plan.md
|
268
|
-
- docs/
|
269
|
-
- docs/
|
270
|
-
- docs/
|
269
|
+
- docs/project-plan/project.drawio
|
270
|
+
- docs/project-plan/project_done.svg
|
271
|
+
- docs/project-plan/project_in_progress.svg
|
272
|
+
- docs/project-plan/project_todo.svg
|
271
273
|
- docs/samples/grid-alignment-center.svg
|
272
274
|
- docs/samples/grid-alignment.svg
|
273
275
|
- docs/samples/grid-direction-horizontal.svg
|
274
276
|
- docs/samples/grid-direction-vertical.svg
|
277
|
+
- docs/samples/html-shapes.svg
|
275
278
|
- docs/samples/samples.md
|
276
279
|
- docs/samples/samples.svg
|
277
280
|
- docs/samples/styles-glass.svg
|
@@ -295,6 +298,13 @@ files:
|
|
295
298
|
- lib/drawio_dsl/drawio_extensions.rb
|
296
299
|
- lib/drawio_dsl/drawio_extensions_active.rb
|
297
300
|
- lib/drawio_dsl/drawio_shapes.rb
|
301
|
+
- lib/drawio_dsl/formatters/_.rb
|
302
|
+
- lib/drawio_dsl/formatters/base_formatter.rb
|
303
|
+
- lib/drawio_dsl/formatters/factory.rb
|
304
|
+
- lib/drawio_dsl/formatters/html_builder.rb
|
305
|
+
- lib/drawio_dsl/formatters/interface_formatter.rb
|
306
|
+
- lib/drawio_dsl/formatters/klass_formatter.rb
|
307
|
+
- lib/drawio_dsl/formatters/style_builder.rb
|
298
308
|
- lib/drawio_dsl/layout_engine.rb
|
299
309
|
- lib/drawio_dsl/schema/_.rb
|
300
310
|
- lib/drawio_dsl/schema/common_style.rb
|
@@ -334,6 +344,8 @@ files:
|
|
334
344
|
- lib/drawio_dsl/schema/shapes/h5.rb
|
335
345
|
- lib/drawio_dsl/schema/shapes/h6.rb
|
336
346
|
- lib/drawio_dsl/schema/shapes/hexagon.rb
|
347
|
+
- lib/drawio_dsl/schema/shapes/interface.rb
|
348
|
+
- lib/drawio_dsl/schema/shapes/klass.rb
|
337
349
|
- lib/drawio_dsl/schema/shapes/note.rb
|
338
350
|
- lib/drawio_dsl/schema/shapes/p.rb
|
339
351
|
- lib/drawio_dsl/schema/shapes/process.rb
|
@@ -343,6 +355,7 @@ files:
|
|
343
355
|
- lib/drawio_dsl/schema/shapes/square.rb
|
344
356
|
- lib/drawio_dsl/schema/shapes/step.rb
|
345
357
|
- lib/drawio_dsl/schema/shapes/tick.rb
|
358
|
+
- lib/drawio_dsl/schema/shapes/todo.rb
|
346
359
|
- lib/drawio_dsl/schema/shapes/triangle.rb
|
347
360
|
- lib/drawio_dsl/schema/virtual/anchor.rb
|
348
361
|
- lib/drawio_dsl/version.rb
|
@@ -1,63 +0,0 @@
|
|
1
|
-
KManager.action :todo_drawio_dsl do
|
2
|
-
action do
|
3
|
-
|
4
|
-
DrawioDsl::Drawio
|
5
|
-
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
-
.diagram(rounded: 1, glass: 1)
|
7
|
-
.page('In progress', theme: :style_03, margin_left: 0, margin_top: 0) do
|
8
|
-
|
9
|
-
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
10
|
-
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan - In progress')
|
11
|
-
|
12
|
-
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
13
|
-
|
14
|
-
square(w: 300, h: 60, title: 'Add page background to theme, use it whenever the theme is set at a diagram/page level')
|
15
|
-
end
|
16
|
-
.page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
|
17
|
-
|
18
|
-
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
19
|
-
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan')
|
20
|
-
|
21
|
-
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
22
|
-
|
23
|
-
square(w: 300, h: 60, title: 'write SVG directly into other projects')
|
24
|
-
square(w: 300, h: 60, title: 'add :shape and :text-only to random shape generator')
|
25
|
-
square(w: 300, h: 60, title: 'Nodes need to support child nodes')
|
26
|
-
square(w: 300, h: 60, title: 'Grid layout does no position itself in relation to the last element')
|
27
|
-
square(w: 300, h: 60, title: 'Dynamic sized shapes that expand to the size of their text')
|
28
|
-
square(w: 300, h: 60, title: 'Control of text padding left, right, top and bottom')
|
29
|
-
square(w: 300, h: 60, title: 'Improve the theme control over text-only shapes')
|
30
|
-
square(w: 300, h: 60, title: 'x,y settings do not work for shapes within a grid layout')
|
31
|
-
square(w: 300, h: 60, title: 'background color does not work from the diagram object')
|
32
|
-
square(w: 300, h: 60, title: 'settings style attributes need to de-duplicate')
|
33
|
-
square(w: 300, h: 60, title: 'need to setup new project plans')
|
34
|
-
square(w: 300, h: 60, title: 'write SVG directly into other projects')
|
35
|
-
square(w: 300, h: 60, title: 'page layout so that you drop elements on and they are positioned correctly, e.g centered, left, right, etc, maybe a grid layout with a wrap of 1 and a width of the page is sufficient')
|
36
|
-
end
|
37
|
-
.page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
|
38
|
-
|
39
|
-
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
40
|
-
# p(x: 350, y: 40, w: 400, h: 80, title: 'Done')
|
41
|
-
|
42
|
-
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
43
|
-
|
44
|
-
square(w: 300, h: 60, title: 'generate extension based graphics based on drawio extensions.js')
|
45
|
-
square(w: 300, h: 60, title: 'active? flag on page defaulting to true. set to false to exclude page from diagram.')
|
46
|
-
square(w: 300, h: 60, title: 'first level child nodes need to hang of node 1')
|
47
|
-
square(w: 300, h: 60, title: 'node has child nodes and add_node will set a nodes parent')
|
48
|
-
square(w: 300, h: 60, title: 'nodes can belong to a parent node, the top level node responds with truthy to root?')
|
49
|
-
square(w: 300, h: 60, title: 'add sample diagram for the github readme file')
|
50
|
-
square(w: 300, h: 60, title: 'write samples into docs folder and display in readme')
|
51
|
-
square(w: 300, h: 60, title: 'add export as .PNG, needs to take a page number as the PNG will not support multiple pages')
|
52
|
-
square(w: 300, h: 60, title: 'add export as .SVG, needs to take a page number as the SVG will not support multiple pages')
|
53
|
-
square(w: 300, h: 60, title: 'add save as .drawio')
|
54
|
-
|
55
|
-
end
|
56
|
-
.cd(:spec)
|
57
|
-
.save('project-plans/drawio_dsl.drawio')
|
58
|
-
.cd(:docs)
|
59
|
-
.export_svg('project_in_progress', page: 1)
|
60
|
-
.export_svg('project_todo' , page: 2)
|
61
|
-
.export_svg('project_done' , page: 3)
|
62
|
-
end
|
63
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
KManager.action :todo_drawio_dsl do
|
2
|
-
action do
|
3
|
-
|
4
|
-
DrawioDsl::Drawio
|
5
|
-
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
-
.diagram(rounded: 1, glass: 1)
|
7
|
-
.page('In progress', theme: :style_03, margin_left: 0, margin_top: 0) do
|
8
|
-
|
9
|
-
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
10
|
-
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan - In progress')
|
11
|
-
|
12
|
-
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
13
|
-
|
14
|
-
square(w: 300, h: 60, title: '')
|
15
|
-
end
|
16
|
-
.page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
|
17
|
-
|
18
|
-
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
19
|
-
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan')
|
20
|
-
|
21
|
-
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
22
|
-
|
23
|
-
end
|
24
|
-
.page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
|
25
|
-
|
26
|
-
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
27
|
-
# p(x: 350, y: 40, w: 400, h: 80, title: 'Done')
|
28
|
-
|
29
|
-
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
30
|
-
|
31
|
-
end
|
32
|
-
.cd(:spec)
|
33
|
-
.save('project-plans/k_doc.drawio')
|
34
|
-
# .cd(:k_doc_docs)
|
35
|
-
# .export_svg('project_in_progress', page: 1)
|
36
|
-
# .export_svg('project_todo' , page: 2)
|
37
|
-
# .export_svg('project_done' , page: 3)
|
38
|
-
end
|
39
|
-
end
|