drawio_dsl 0.8.6 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.vscode/settings.json +2 -1
  3. data/CHANGELOG.md +22 -0
  4. data/README.md +0 -7
  5. data/{.builders/.data/shapes.json → config/configuration.json} +49 -49
  6. data/docs/domain-modal/domain_model_custom.drawio +134 -134
  7. data/docs/domain-modal/domain_model_custom.svg +1 -1
  8. data/docs/domain_model.drawio +265 -0
  9. data/docs/domain_model.json +1038 -0
  10. data/docs/domain_model.svg +3 -0
  11. data/docs/parking_app.drawio +24 -24
  12. data/docs/parking_app.svg +1 -1
  13. data/docs/printspeak-architecture-generator.drawio +42 -30
  14. data/docs/printspeak-architecture-generator.svg +1 -1
  15. data/docs/project-plan/project.drawio +78 -54
  16. data/docs/project-plan/project_done.svg +1 -1
  17. data/docs/project-plan/project_in_progress.svg +1 -1
  18. data/docs/project-plan/project_todo.svg +1 -1
  19. data/lib/drawio_dsl/configuration.rb +99 -0
  20. data/lib/drawio_dsl/drawio.rb +16 -0
  21. data/lib/drawio_dsl/formatters/base_formatter.rb +120 -0
  22. data/lib/drawio_dsl/formatters/html_builder.rb +39 -0
  23. data/lib/drawio_dsl/formatters/interface_formatter.rb +13 -1
  24. data/lib/drawio_dsl/formatters/klass_formatter.rb +13 -1
  25. data/lib/drawio_dsl/version.rb +1 -1
  26. data/lib/drawio_dsl.rb +2 -0
  27. data/package-lock.json +2 -2
  28. data/package.json +1 -1
  29. metadata +6 -31
  30. data/.builders/.templates/basic/configuration_shapes.rb +0 -27
  31. data/.builders/.templates/basic/dom_builder_shapes.rb +0 -17
  32. data/.builders/.templates/basic/drawio_extensions.rb +0 -58
  33. data/.builders/.templates/basic/drawio_shapes.rb +0 -23
  34. data/.builders/.templates/basic/schema_require.rb +0 -19
  35. data/.builders/.templates/basic/schema_shape.rb +0 -9
  36. data/.builders/.templates/basic/schema_shape_spec.rb +0 -13
  37. data/.builders/_.rb +0 -1
  38. data/.builders/blueprint/shapes.rb +0 -173
  39. data/.builders/boot.rb +0 -72
  40. data/.builders/generators/01-bootstrap.rb +0 -130
  41. data/.builders/generators/02-generate-app.rb +0 -47
  42. data/.builders/generators/10-transform-drawio-js.rb +0 -195
  43. data/.builders/generators/20-drawio-extensions.rb +0 -41
  44. data/.builders/generators/domain_diagram.rb +0 -473
  45. data/.builders/generators/parking-map.png +0 -0
  46. data/.builders/generators/parking_app.rb +0 -110
  47. data/.builders/generators/printspeak-architecture-generator.rb +0 -45
  48. data/.builders/generators/project-plan.rb +0 -81
  49. data/.builders/generators/sample_diagrams/05-samples.rb +0 -36
  50. data/.builders/generators/sample_diagrams/10-page-margin.rb +0 -42
  51. data/.builders/generators/sample_diagrams/15-grid-direction.rb +0 -34
  52. data/.builders/generators/sample_diagrams/16-grid-alignment.rb +0 -70
  53. data/.builders/generators/sample_diagrams/20-styles.rb +0 -61
  54. data/.builders/generators/sample_diagrams/25-themes.rb +0 -37
  55. data/.builders/generators/sample_diagrams/30-html-shapes.rb +0 -48
  56. data/.builders/generators/sample_diagrams/35-ids-and-arrows.rb +0 -28
  57. data/.builders/generators/sample_diagrams/50-willoughby-council.rb +0 -51
@@ -1,195 +0,0 @@
1
- KManager.action :transform_drawio_js do
2
-
3
- action do
4
- director = KDirector::Dsls::BasicDsl
5
- .init(k_builder,
6
- on_exist: :write, # %i[skip write compare]
7
- on_action: :execute # %i[queue execute]
8
- )
9
- .blueprint do
10
- cd(:data)
11
-
12
- source_file = '/Users/davidcruwys/dev/tools/drawio-desktop/drawio/src/main/webapp/js/diagramly/Extensions.js'
13
- target_file = k_builder.target_folders.get_filename(:data, 'extensions.js')
14
-
15
- clean = CleanExtensionsJs.new(source_file, target_file)
16
-
17
- cd(:lib)
18
-
19
- clean.parse
20
-
21
- add_file('drawio_extensions.json', content: clean.build_json)
22
- add('drawio_extensions.rb', constants: clean.constants, sections: clean.sections)
23
- end
24
- end
25
- end
26
-
27
- class CleanExtensionsJs
28
- def initialize(source_file, target_file)
29
- @source_file = source_file
30
- @target_file = target_file
31
- @source = File.read(@source_file)
32
- @constants = []
33
- @builder = ExtensionJsBuilder.new
34
- end
35
-
36
- def parse
37
- split_source
38
- end
39
-
40
- def build_json
41
- @builder.build_json
42
- end
43
-
44
- def build_ruby
45
- @builder.build_ruby
46
- end
47
-
48
- def constants
49
- @builder.constants.join("\n")
50
- end
51
-
52
- def sections
53
- @builder.sections.select { |s| s[:shapes].length > 0 }
54
- end
55
-
56
- private
57
-
58
- def split_source
59
- source_lines = @source.split("\n")
60
- section = :unknown
61
-
62
- source_lines.each do |line|
63
- if line.include?('// Global import transformation')
64
- section = :constants
65
- next
66
- elsif line.include?('var styleMap = {') && !line.include?('var styleMap = {};')
67
- puts '-----------------------------------'
68
- section = :style_map
69
- next
70
- elsif line.include?('};') ||
71
- line.include?('//Instead of doing a massive code refactoring, thees ugly global variables are used')
72
- section = :unknown
73
- end
74
-
75
- if section == :constants
76
- @builder.process_constant(line)
77
- end
78
-
79
- if section == :style_map
80
- @builder.process_style_map(line)
81
- end
82
- end
83
- end
84
-
85
- def process_style_map(line)
86
- line
87
- end
88
- end
89
-
90
- class ExtensionJsBuilder
91
- attr_accessor :constants
92
- attr_accessor :shapes
93
- attr_accessor :sections
94
- attr_accessor :current_section
95
-
96
- def initialize
97
- @constants = []
98
- @shapes = []
99
- @sections = []
100
- @current_section = nil
101
- end
102
-
103
- def process_constant(line)
104
- line = line.gsub(' ', '').gsub('var ', '').gsub(/;$/, '')
105
- @constants << " #{line}"
106
- end
107
-
108
- def process_style_map(line)
109
- line = clean_line(line)
110
-
111
- return if kill_line(line)
112
-
113
- if line.start_with?('#')
114
- set_section(line)
115
- return
116
- end
117
-
118
- return unless current_section
119
-
120
- parts = process_line(line)
121
-
122
- if parts.length == 2
123
- name = parts[0]
124
- style = parts[1]
125
- current_section[:shapes] << { name: name, style: style }
126
- shapes << line
127
- else
128
- puts 'length not 2'
129
- puts line
130
- end
131
- end
132
-
133
- def process_line(line)
134
- line.split(':').map { |s| s.strip.gsub('"', '') }
135
- end
136
-
137
- def clean_line(line)
138
- line
139
- .strip
140
- .gsub(' ', ' ')
141
- .gsub(' ', ' ')
142
- .gsub(' :', ':')
143
- .gsub("don't", 'do not')
144
- .gsub('//TODO', '')
145
- .gsub(/(\/\/)([^ ])/) do |_|
146
- match = Regexp.last_match
147
- "// #{match[2]}"
148
- end
149
- .gsub("'", '"')
150
- .gsub('not all variants covered', '')
151
- .gsub('Timeline shape', '')
152
- .gsub('# not all variants covered', '')
153
- .gsub('not all versions supported', '')
154
- .gsub('ss + "', '"#{ss}')
155
- .gsub('s + "', '"#{s}')
156
- .gsub('cs,', '#{cs}')
157
- .gsub(/cs$/, '#{cs}')
158
- .gsub('" + containerStyle', '#{containerStyle}"')
159
- .gsub('kupIcon + "', '"#{kupIcon}')
160
- .gsub('gcpIcon + "', '"#{gcpIcon}')
161
- .gsub('azur19 + "', '"#{azur19}')
162
- .gsub('ssAzure + "', '"#{ssAzure}')
163
- .gsub('" + arcSize + "', '#{arcSize}')
164
- .gsub('//', '#')
165
- .gsub(' ', ' ')
166
- .gsub(', #', '')
167
- .strip
168
- .gsub(/,$/, '')
169
- .strip
170
- end
171
-
172
- def kill_line(line)
173
- line.end_with?('NA') ||
174
- line.end_with?('not working properly, needs specific code)') ||
175
- line.start_with?('Timeline shapes are postponed, this code is a work-in-progress') ||
176
- line.start_with?('# *******') ||
177
- line.start_with?('# 2019 mapping') ||
178
- line.include?('# "') ||
179
- line.include?('# "') ||
180
- line.empty?
181
- end
182
-
183
- def set_section(line)
184
- section = line.gsub('#', '').strip
185
- @current_section = {
186
- name: section,
187
- shapes: []
188
- }
189
- @sections << current_section
190
- end
191
-
192
- def build_json
193
- JSON.pretty_generate(@sections)
194
- end
195
- end
@@ -1,41 +0,0 @@
1
- KManager.action :transform_drawio_js do
2
-
3
- action do
4
- director = DrawioDsl::Drawio
5
- .init(k_builder, on_exist: :write, on_action: :execute)
6
- .diagram(theme: :style_10)
7
-
8
- ext = DrawioDsl::DrawioExtensions.new
9
- ext.build_extensions
10
- puts ext.sections.length
11
-
12
- ext.sections.select { |s| s[:active] }.each do |section|
13
- director.page(section[:name]) do
14
- grid_layout(wrap_at: 5)
15
- puts section[:name]
16
- puts section[:shapes]
17
- section[:shapes].select { |s| s[:active] }.each do |shape|
18
- square(title: shape[:name], style_modifiers: shape[:style])
19
- log.kv(:title, shape[:name])
20
- log.kv(:style, shape[:style])
21
- end
22
- end
23
- end
24
- director
25
- .cd(:spec)
26
- .save('.samples/20-extensions.drawio')
27
- .cd(:docs)
28
-
29
- markdown = "# Extensions\n\n"
30
-
31
- director.builder.diagram.pages.each_with_index do |page, index|
32
- page_no = index+1
33
- puts "Page #{page_no}, #{page.name}"
34
- # director.export_svg("extensions/#{page.name}", page: page_no)
35
- markdown += "## #{page.name}\n\n![](./extensions/#{page.name}.svg)\n\n"
36
- end
37
-
38
- director
39
- .add('extensions.md', content: markdown)
40
- end
41
- end