drawio_dsl 0.11.1 → 0.11.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/config/configuration.json +157 -16
  4. data/docs/domain_model.drawio +89 -89
  5. data/docs/domain_model.json +267 -267
  6. data/docs/printspeak-architecture-controllers-custom.drawio +9 -9
  7. data/docs/printspeak-architecture-controllers.drawio +47 -47
  8. data/docs/printspeak-architecture-generator-custom.drawio +16 -10
  9. data/docs/printspeak-architecture-generator.drawio +268 -0
  10. data/docs/project-plan/project.drawio +92 -89
  11. data/docs/project-plan/project_done.svg +1 -1
  12. data/docs/project-plan/project_in_progress.svg +1 -1
  13. data/docs/project-plan/project_todo.svg +1 -1
  14. data/docs/tailwind_domain_model-custom.drawio +104 -0
  15. data/docs/tailwind_domain_model.json +288 -0
  16. data/docs/tailwind_domain_model.svg +3 -0
  17. data/lib/drawio_dsl/configuration.rb +36 -24
  18. data/lib/drawio_dsl/dom_builder_shapes.rb +78 -0
  19. data/lib/drawio_dsl/drawio_shapes.rb +121 -43
  20. data/lib/drawio_dsl/schema/_.rb +13 -0
  21. data/lib/drawio_dsl/schema/element.rb +4 -0
  22. data/lib/drawio_dsl/schema/line.rb +33 -3
  23. data/lib/drawio_dsl/schema/{texts/.rb → lines/dash.rb} +2 -2
  24. data/lib/drawio_dsl/schema/{elements/.rb → lines/dash24.rb} +2 -2
  25. data/lib/drawio_dsl/schema/lines/dash32.rb +9 -0
  26. data/lib/drawio_dsl/schema/lines/dash44.rb +9 -0
  27. data/lib/drawio_dsl/schema/lines/dash_dot.rb +9 -0
  28. data/lib/drawio_dsl/schema/lines/dash_dot_dot.rb +9 -0
  29. data/lib/drawio_dsl/schema/lines/dash_long_dash.rb +9 -0
  30. data/lib/drawio_dsl/schema/lines/{.rb → dot.rb} +2 -2
  31. data/lib/drawio_dsl/schema/lines/dot_dot_dot.rb +9 -0
  32. data/lib/drawio_dsl/schema/lines/double.rb +9 -0
  33. data/lib/drawio_dsl/schema/lines/double_dash.rb +9 -0
  34. data/lib/drawio_dsl/schema/lines/double_dot.rb +9 -0
  35. data/lib/drawio_dsl/schema/lines/long_dash.rb +9 -0
  36. data/lib/drawio_dsl/schema/shape.rb +6 -1
  37. data/lib/drawio_dsl/schema/text.rb +4 -0
  38. data/lib/drawio_dsl/version.rb +1 -1
  39. data/package-lock.json +2 -2
  40. data/package.json +1 -1
  41. metadata +19 -5
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1302px" height="522px" viewBox="-0.5 -0.5 1302 522"><defs/><g><rect x="20" y="0" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 80px; margin-left: 21px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Tailwind GEM</div></div></div></foreignObject><text x="100" y="84" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Tailwind GEM</text></switch></g><rect x="240" y="0" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 80px; margin-left: 241px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Configuration</div></div></div></foreignObject><text x="320" y="84" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Configuration</text></switch></g><rect x="440" y="0" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 0px; margin-left: 440px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Configuration</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">collections: A&lt;Collection&gt;</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">themes: A&lt;Theme&gt;</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">data_shapes: A&lt;DataShape&gt;</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">component_groups: A&lt;ComponentGroup&gt;</p></div></div></div></foreignObject><text x="440" y="84" fill="#333333" font-family="Helvetica" font-size="12px">Configuration...</text></switch></g><rect x="660" y="0" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 0px; margin-left: 660px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Collection</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">component_groups: A&lt;ComponentGroup&gt;</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">default_themes: A&lt;Theme&gt;</p></div></div></div></foreignObject><text x="660" y="84" fill="#333333" font-family="Helvetica" font-size="12px">Collection...</text></switch></g><rect x="880" y="0" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 0px; margin-left: 880px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Theme</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p></div></div></div></foreignObject><text x="880" y="84" fill="#333333" font-family="Helvetica" font-size="12px">Theme...</text></switch></g><rect x="1100" y="0" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 0px; margin-left: 1100px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>ComponentGroup</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">collection: Collection</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">components: A&lt;Component&gt;</p></div></div></div></foreignObject><text x="1100" y="84" fill="#333333" font-family="Helvetica" font-size="12px">ComponentGroup...</text></switch></g><rect x="0" y="180" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 180px; margin-left: 0px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Component</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">data_shape: DataShape</p></div></div></div></foreignObject><text x="0" y="264" fill="#333333" font-family="Helvetica" font-size="12px">Component...</text></switch></g><rect x="220" y="180" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 180px; margin-left: 220px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>DataShape</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p></div></div></div></foreignObject><text x="220" y="264" fill="#333333" font-family="Helvetica" font-size="12px">DataShape...</text></switch></g><rect x="460" y="180" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 260px; margin-left: 461px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Schema</div></div></div></foreignObject><text x="540" y="264" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Schema</text></switch></g><rect x="660" y="180" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 180px; margin-left: 660px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>WebSite</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">target_folder: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">base_collection: Collection</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">theme: Theme</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">root: Page</p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">favourite_components() : A&lt;Component&gt;</p></div></div></div></foreignObject><text x="660" y="264" fill="#333333" font-family="Helvetica" font-size="12px">WebSite...</text></switch></g><rect x="880" y="180" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 180px; margin-left: 880px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Page</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">sub_folder: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">level: Integer</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">pages: A&lt;Page&gt;</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">components: A&lt;Component&gt;</p></div></div></div></foreignObject><text x="880" y="264" fill="#333333" font-family="Helvetica" font-size="12px">Page...</text></switch></g><rect x="1100" y="180" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 180px; margin-left: 1100px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Component</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">key: Symbol</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">name: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">description: String</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">component_group: ComponentGroup</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">data_shape: DataShape</p></div></div></div></foreignObject><text x="1100" y="264" fill="#333333" font-family="Helvetica" font-size="12px">Component...</text></switch></g><rect x="20" y="360" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 440px; margin-left: 21px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Tailwind Generator</div></div></div></foreignObject><text x="100" y="444" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Tailwind Generator</text></switch></g><rect x="240" y="360" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 440px; margin-left: 241px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Tailwind DSL</div></div></div></foreignObject><text x="320" y="444" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Tailwind DSL</text></switch></g><rect x="440" y="360" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 360px; margin-left: 440px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>TailwindDsl</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">website()</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">page()</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">component()</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">save()</p></div></div></div></foreignObject><text x="440" y="444" fill="#333333" font-family="Helvetica" font-size="12px">TailwindDsl...</text></switch></g><rect x="680" y="360" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 440px; margin-left: 681px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">DataBuilder</div></div></div></foreignObject><text x="760" y="444" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">DataBuilder</text></switch></g><rect x="880" y="360" width="200" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 202px; height: 160px; padding-top: 360px; margin-left: 880px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 200px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>BaseDataBuilder</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">obj: Hash</p></div></div></div></foreignObject><text x="880" y="444" fill="#333333" font-family="Helvetica" font-size="12px">BaseDataBuilder...</text></switch></g><rect x="1120" y="360" width="160" height="160" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 360px; margin-left: 1120px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px ; text-align: center"><b>Factory</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">data()</p><p style="margin: 0px ; margin-left: 4px ; margin-bottom: 4px">data_instance()</p></div></div></div></foreignObject><text x="1120" y="444" fill="#333333" font-family="Helvetica" font-size="12px">&lt;&lt; MixIn &gt;&gt;...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
@@ -80,14 +80,7 @@ module DrawioDsl
80
80
  # Elements
81
81
 
82
82
  def element(key)
83
- elements[key] || ElementShapeConfig.new(
84
- key: :square,
85
- x: 0,
86
- y: 0,
87
- w: 160,
88
- h: 160,
89
- style_modifiers: ''
90
- )
83
+ elements[key] || default_element
91
84
  end
92
85
 
93
86
  def elements
@@ -108,6 +101,17 @@ module DrawioDsl
108
101
  @elements
109
102
  end
110
103
 
104
+ def default_element
105
+ @default_element ||= ElementShapeConfig.new(
106
+ key: :square,
107
+ x: 0,
108
+ y: 0,
109
+ w: 160,
110
+ h: 160,
111
+ style_modifiers: ''
112
+ )
113
+ end
114
+
111
115
  def element_keys
112
116
  elements.keys
113
117
  end
@@ -119,14 +123,7 @@ module DrawioDsl
119
123
  # Lines
120
124
 
121
125
  def line(key)
122
- lines[key] || LineShapeConfig.new(
123
- key: :solid,
124
- x: 0,
125
- y: 0,
126
- w: 50,
127
- h: 50,
128
- style_modifiers: 'edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0'
129
- )
126
+ lines[key] || default_line
130
127
  end
131
128
 
132
129
  def lines
@@ -147,6 +144,17 @@ module DrawioDsl
147
144
  @lines
148
145
  end
149
146
 
147
+ def default_line
148
+ @default_line ||= LineShapeConfig.new(
149
+ key: :solid,
150
+ x: 0,
151
+ y: 0,
152
+ w: 50,
153
+ h: 50,
154
+ style_modifiers: 'edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0'
155
+ )
156
+ end
157
+
150
158
  def line_keys
151
159
  lines.keys
152
160
  end
@@ -156,14 +164,7 @@ module DrawioDsl
156
164
  end
157
165
 
158
166
  def text(key)
159
- texts[key] || TextShapeConfig.new(
160
- key: :p,
161
- x: 0,
162
- y: 0,
163
- w: 100,
164
- h: 50,
165
- style_modifiers: 'text;fontSize=16;fontStyle=1;fillColor=none'
166
- )
167
+ texts[key] || default_text
167
168
  end
168
169
 
169
170
  # Texts
@@ -186,6 +187,17 @@ module DrawioDsl
186
187
  @texts
187
188
  end
188
189
 
190
+ def default_text
191
+ @default_line ||= TextShapeConfig.new(
192
+ key: :p,
193
+ x: 0,
194
+ y: 0,
195
+ w: 100,
196
+ h: 50,
197
+ style_modifiers: 'text;fontSize=16;fontStyle=1;fillColor=none'
198
+ )
199
+ end
200
+
189
201
  def text_keys
190
202
  texts.keys
191
203
  end
@@ -10,6 +10,84 @@ module DrawioDsl
10
10
  add_shape(solid)
11
11
  end
12
12
 
13
+ def add_dash(id = nil, **opts, &block)
14
+ opts = { id: id }.merge(opts) if id
15
+ dash = DrawioDsl::Schema::Dash.new(current_page, **opts, &block)
16
+ add_shape(dash)
17
+ end
18
+
19
+ def add_dot(id = nil, **opts, &block)
20
+ opts = { id: id }.merge(opts) if id
21
+ dot = DrawioDsl::Schema::Dot.new(current_page, **opts, &block)
22
+ add_shape(dot)
23
+ end
24
+
25
+ def add_dash_dot(id = nil, **opts, &block)
26
+ opts = { id: id }.merge(opts) if id
27
+ dash_dot = DrawioDsl::Schema::DashDot.new(current_page, **opts, &block)
28
+ add_shape(dash_dot)
29
+ end
30
+
31
+ def add_dash_dot_dot(id = nil, **opts, &block)
32
+ opts = { id: id }.merge(opts) if id
33
+ dash_dot_dot = DrawioDsl::Schema::DashDotDot.new(current_page, **opts, &block)
34
+ add_shape(dash_dot_dot)
35
+ end
36
+
37
+ def add_dot_dot_dot(id = nil, **opts, &block)
38
+ opts = { id: id }.merge(opts) if id
39
+ dot_dot_dot = DrawioDsl::Schema::DotDotDot.new(current_page, **opts, &block)
40
+ add_shape(dot_dot_dot)
41
+ end
42
+
43
+ def add_long_dash(id = nil, **opts, &block)
44
+ opts = { id: id }.merge(opts) if id
45
+ long_dash = DrawioDsl::Schema::LongDash.new(current_page, **opts, &block)
46
+ add_shape(long_dash)
47
+ end
48
+
49
+ def add_dash_long_dash(id = nil, **opts, &block)
50
+ opts = { id: id }.merge(opts) if id
51
+ dash_long_dash = DrawioDsl::Schema::DashLongDash.new(current_page, **opts, &block)
52
+ add_shape(dash_long_dash)
53
+ end
54
+
55
+ def add_dash24(id = nil, **opts, &block)
56
+ opts = { id: id }.merge(opts) if id
57
+ dash24 = DrawioDsl::Schema::Dash24.new(current_page, **opts, &block)
58
+ add_shape(dash24)
59
+ end
60
+
61
+ def add_dash32(id = nil, **opts, &block)
62
+ opts = { id: id }.merge(opts) if id
63
+ dash32 = DrawioDsl::Schema::Dash32.new(current_page, **opts, &block)
64
+ add_shape(dash32)
65
+ end
66
+
67
+ def add_dash44(id = nil, **opts, &block)
68
+ opts = { id: id }.merge(opts) if id
69
+ dash44 = DrawioDsl::Schema::Dash44.new(current_page, **opts, &block)
70
+ add_shape(dash44)
71
+ end
72
+
73
+ def add_double(id = nil, **opts, &block)
74
+ opts = { id: id }.merge(opts) if id
75
+ double = DrawioDsl::Schema::Double.new(current_page, **opts, &block)
76
+ add_shape(double)
77
+ end
78
+
79
+ def add_double_dash(id = nil, **opts, &block)
80
+ opts = { id: id }.merge(opts) if id
81
+ double_dash = DrawioDsl::Schema::DoubleDash.new(current_page, **opts, &block)
82
+ add_shape(double_dash)
83
+ end
84
+
85
+ def add_double_dot(id = nil, **opts, &block)
86
+ opts = { id: id }.merge(opts) if id
87
+ double_dot = DrawioDsl::Schema::DoubleDot.new(current_page, **opts, &block)
88
+ add_shape(double_dot)
89
+ end
90
+
13
91
  def add_h1(id = nil, **opts, &block)
14
92
  opts = { id: id }.merge(opts) if id
15
93
  h1 = DrawioDsl::Schema::H1.new(current_page, **opts, &block)
@@ -5,94 +5,120 @@ module DrawioDsl
5
5
  # :nocov:
6
6
  module DrawioShapes
7
7
  def random(**opts)
8
- case rand(44)
8
+ case rand(57)
9
9
  when 0
10
10
  solid(**opts)
11
11
  when 1
12
- h1(**opts)
12
+ dash(**opts)
13
13
  when 2
14
- h2(**opts)
14
+ dot(**opts)
15
15
  when 3
16
- h3(**opts)
16
+ dash_dot(**opts)
17
17
  when 4
18
- h4(**opts)
18
+ dash_dot_dot(**opts)
19
19
  when 5
20
- h5(**opts)
20
+ dot_dot_dot(**opts)
21
21
  when 6
22
- h6(**opts)
22
+ long_dash(**opts)
23
23
  when 7
24
- p(**opts)
24
+ dash_long_dash(**opts)
25
25
  when 8
26
- actor(**opts)
26
+ dash24(**opts)
27
27
  when 9
28
- actor2(**opts)
28
+ dash32(**opts)
29
29
  when 10
30
- callout(**opts)
30
+ dash44(**opts)
31
31
  when 11
32
- callout2(**opts)
32
+ double(**opts)
33
33
  when 12
34
- callout3(**opts)
34
+ double_dash(**opts)
35
35
  when 13
36
- callout4(**opts)
36
+ double_dot(**opts)
37
37
  when 14
38
- circle(**opts)
38
+ h1(**opts)
39
39
  when 15
40
- cloud(**opts)
40
+ h2(**opts)
41
41
  when 16
42
- container(**opts)
42
+ h3(**opts)
43
43
  when 17
44
- container2(**opts)
44
+ h4(**opts)
45
45
  when 18
46
- container3(**opts)
46
+ h5(**opts)
47
47
  when 19
48
- container4(**opts)
48
+ h6(**opts)
49
49
  when 20
50
- cross(**opts)
50
+ p(**opts)
51
51
  when 21
52
- envelop(**opts)
52
+ actor(**opts)
53
53
  when 22
54
- database(**opts)
54
+ actor2(**opts)
55
55
  when 23
56
- db_json(**opts)
56
+ callout(**opts)
57
57
  when 24
58
- diamond(**opts)
58
+ callout2(**opts)
59
59
  when 25
60
- document(**opts)
60
+ callout3(**opts)
61
61
  when 26
62
- ellipse(**opts)
62
+ callout4(**opts)
63
63
  when 27
64
- group(**opts)
64
+ circle(**opts)
65
65
  when 28
66
- hexagon(**opts)
66
+ cloud(**opts)
67
67
  when 29
68
- interface(**opts)
68
+ container(**opts)
69
69
  when 30
70
- klass(**opts)
70
+ container2(**opts)
71
71
  when 31
72
- note(**opts)
72
+ container3(**opts)
73
73
  when 32
74
- process(**opts)
74
+ container4(**opts)
75
75
  when 33
76
- rectangle(**opts)
76
+ cross(**opts)
77
77
  when 34
78
- rectangle2(**opts)
78
+ envelop(**opts)
79
79
  when 35
80
- square(**opts)
80
+ database(**opts)
81
81
  when 36
82
- step(**opts)
82
+ db_json(**opts)
83
83
  when 37
84
- tick(**opts)
84
+ diamond(**opts)
85
85
  when 38
86
- todo(**opts)
86
+ document(**opts)
87
87
  when 39
88
- face(**opts)
88
+ ellipse(**opts)
89
89
  when 40
90
- triangle(**opts)
90
+ group(**opts)
91
91
  when 41
92
- embed_row(**opts)
92
+ hexagon(**opts)
93
93
  when 42
94
- embed_col50(**opts)
94
+ interface(**opts)
95
95
  when 43
96
+ klass(**opts)
97
+ when 44
98
+ note(**opts)
99
+ when 45
100
+ process(**opts)
101
+ when 46
102
+ rectangle(**opts)
103
+ when 47
104
+ rectangle2(**opts)
105
+ when 48
106
+ square(**opts)
107
+ when 49
108
+ step(**opts)
109
+ when 50
110
+ tick(**opts)
111
+ when 51
112
+ todo(**opts)
113
+ when 52
114
+ face(**opts)
115
+ when 53
116
+ triangle(**opts)
117
+ when 54
118
+ embed_row(**opts)
119
+ when 55
120
+ embed_col50(**opts)
121
+ when 56
96
122
  embed_col200(**opts)
97
123
  end
98
124
  end
@@ -101,6 +127,58 @@ module DrawioDsl
101
127
  builder.add_solid(id, **opts, &block)
102
128
  end
103
129
 
130
+ def dash(id = nil, **opts, &block)
131
+ builder.add_dash(id, **opts, &block)
132
+ end
133
+
134
+ def dot(id = nil, **opts, &block)
135
+ builder.add_dot(id, **opts, &block)
136
+ end
137
+
138
+ def dash_dot(id = nil, **opts, &block)
139
+ builder.add_dash_dot(id, **opts, &block)
140
+ end
141
+
142
+ def dash_dot_dot(id = nil, **opts, &block)
143
+ builder.add_dash_dot_dot(id, **opts, &block)
144
+ end
145
+
146
+ def dot_dot_dot(id = nil, **opts, &block)
147
+ builder.add_dot_dot_dot(id, **opts, &block)
148
+ end
149
+
150
+ def long_dash(id = nil, **opts, &block)
151
+ builder.add_long_dash(id, **opts, &block)
152
+ end
153
+
154
+ def dash_long_dash(id = nil, **opts, &block)
155
+ builder.add_dash_long_dash(id, **opts, &block)
156
+ end
157
+
158
+ def dash24(id = nil, **opts, &block)
159
+ builder.add_dash24(id, **opts, &block)
160
+ end
161
+
162
+ def dash32(id = nil, **opts, &block)
163
+ builder.add_dash32(id, **opts, &block)
164
+ end
165
+
166
+ def dash44(id = nil, **opts, &block)
167
+ builder.add_dash44(id, **opts, &block)
168
+ end
169
+
170
+ def double(id = nil, **opts, &block)
171
+ builder.add_double(id, **opts, &block)
172
+ end
173
+
174
+ def double_dash(id = nil, **opts, &block)
175
+ builder.add_double_dash(id, **opts, &block)
176
+ end
177
+
178
+ def double_dot(id = nil, **opts, &block)
179
+ builder.add_double_dot(id, **opts, &block)
180
+ end
181
+
104
182
  def h1(id = nil, **opts, &block)
105
183
  builder.add_h1(id, **opts, &block)
106
184
  end
@@ -56,6 +56,19 @@ require_relative 'elements/embed_col200'
56
56
 
57
57
  # Connector lines
58
58
  require_relative 'lines/solid'
59
+ require_relative 'lines/dash'
60
+ require_relative 'lines/dot'
61
+ require_relative 'lines/dash_dot'
62
+ require_relative 'lines/dash_dot_dot'
63
+ require_relative 'lines/dot_dot_dot'
64
+ require_relative 'lines/long_dash'
65
+ require_relative 'lines/dash_long_dash'
66
+ require_relative 'lines/dash24'
67
+ require_relative 'lines/dash32'
68
+ require_relative 'lines/dash44'
69
+ require_relative 'lines/double'
70
+ require_relative 'lines/double_dash'
71
+ require_relative 'lines/double_dot'
59
72
 
60
73
  # Text elements such as h1, h2, p, etc.
61
74
  require_relative 'texts/h1'
@@ -18,6 +18,10 @@ module DrawioDsl
18
18
  @gradient = args[:gradient] || theme_palette.gradient
19
19
  @font_color = args[:font_color] || theme_palette.font_color
20
20
  end
21
+
22
+ def default_configuration
23
+ KConfig.configuration.drawio.shape.default_element
24
+ end
21
25
  end
22
26
  end
23
27
  end
@@ -5,19 +5,49 @@ module DrawioDsl
5
5
  # Text represents lines, usually used for drawing a connection between two elements.
6
6
  class Line < Shape
7
7
  class << self
8
- def configure_as(key)
8
+ attr_reader :default_stroke
9
+ attr_reader :default_design
10
+
11
+ def configure_as(key, stroke: nil, design: nil)
9
12
  configure_shape(key, :line)
13
+ @default_stroke = stroke
14
+ @default_design = design
10
15
  end
11
16
  end
12
17
 
13
18
  attr_accessor :source
14
19
  attr_accessor :target
20
+ attr_accessor :c1 # compass_point1 = :n, :ne, :e, :se, :s, :sw, :w, :nw
21
+ attr_accessor :c2 # compass_point2 = :n, :ne, :e, :se, :s, :sw, :w, :nw
22
+ attr_accessor :stroke
23
+ attr_accessor :design
15
24
 
25
+ # rubocop:disable Metrics/AbcSize
16
26
  def apply_defaults(args)
17
27
  super(args)
18
28
 
19
- @source = args[:source]
20
- @target = args[:target]
29
+ @source = args[:source]
30
+ @target = args[:target]
31
+ @c1 = args[:c1] || :nw
32
+ @c2 = args[:c2] || :ne
33
+ @stroke = args[:stroke] || self.class.default_stroke
34
+ @design = args[:design] || self.class.default_design
35
+ @fill_color = args[:fill_color] || theme_palette.fill_color
36
+ @stroke_color = args[:stroke_color] || theme_palette.stroke_color
37
+ end
38
+ # rubocop:enable Metrics/AbcSize
39
+
40
+ def default_configuration
41
+ KConfig.configuration.drawio.shape.default_line
42
+ end
43
+
44
+ def base_modifiers
45
+ return @base_modifiers if defined? @base_modifiers
46
+
47
+ stroke_modifiers = KConfig.configuration.drawio.stroke(stroke)
48
+ design_modifiers = KConfig.configuration.drawio.connector.design(design)
49
+
50
+ @base_modifiers = [stroke_modifiers, design_modifiers].reject(&:empty?).join(';')
21
51
  end
22
52
  end
23
53
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module DrawioDsl
4
4
  module Schema
5
- class P < Text
6
- configure_as(:p)
5
+ class Dash < Line
6
+ configure_as(:dash, stroke: :dash)
7
7
  end
8
8
  end
9
9
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module DrawioDsl
4
4
  module Schema
5
- class EmbedCol200 < Element
6
- configure_as(:embed_col200)
5
+ class Dash24 < Line
6
+ configure_as(:dash24, stroke: :dash24)
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dash32 < Line
6
+ configure_as(:dash32, stroke: :dash32)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dash44 < Line
6
+ configure_as(:dash44, stroke: :dash44)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class DashDot < Line
6
+ configure_as(:dash_dot, stroke: :dash_dot)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class DashDotDot < Line
6
+ configure_as(:dash_dot_dot, stroke: :dash_dot_dot)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class DashLongDash < Line
6
+ configure_as(:dash_long_dash, stroke: :dash_long_dash)
7
+ end
8
+ end
9
+ end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module DrawioDsl
4
4
  module Schema
5
- class Solid < Line
6
- configure_as(:solid)
5
+ class Dot < Line
6
+ configure_as(:dot, stroke: :dot)
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class DotDotDot < Line
6
+ configure_as(:dot_dot_dot, stroke: :dot_dot_dot)
7
+ end
8
+ end
9
+ end