drawio_dsl 0.11.2 → 0.11.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/config/configuration.json +238 -44
  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 +89 -80
  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/dom_builder_shapes.rb +60 -0
  18. data/lib/drawio_dsl/drawio_shapes.rb +103 -43
  19. data/lib/drawio_dsl/schema/_.rb +10 -0
  20. data/lib/drawio_dsl/schema/line.rb +16 -2
  21. data/lib/drawio_dsl/schema/lines/dash_dot.rb +9 -0
  22. data/lib/drawio_dsl/schema/lines/dash_dot_dot.rb +9 -0
  23. data/lib/drawio_dsl/schema/lines/dash_long_dash.rb +9 -0
  24. data/lib/drawio_dsl/schema/lines/dashed.rb +9 -0
  25. data/lib/drawio_dsl/schema/lines/dashed24.rb +9 -0
  26. data/lib/drawio_dsl/schema/lines/dashed32.rb +9 -0
  27. data/lib/drawio_dsl/schema/lines/dashed44.rb +9 -0
  28. data/lib/drawio_dsl/schema/lines/dot_dot_dot.rb +9 -0
  29. data/lib/drawio_dsl/schema/lines/dotted.rb +9 -0
  30. data/lib/drawio_dsl/schema/lines/long_dash.rb +9 -0
  31. data/lib/drawio_dsl/schema/shape.rb +5 -0
  32. data/lib/drawio_dsl/version.rb +1 -1
  33. data/package-lock.json +2 -2
  34. data/package.json +1 -1
  35. metadata +16 -2
@@ -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>
@@ -10,6 +10,66 @@ module DrawioDsl
10
10
  add_shape(solid)
11
11
  end
12
12
 
13
+ def add_dashed(id = nil, **opts, &block)
14
+ opts = { id: id }.merge(opts) if id
15
+ dashed = DrawioDsl::Schema::Dashed.new(current_page, **opts, &block)
16
+ add_shape(dashed)
17
+ end
18
+
19
+ def add_dotted(id = nil, **opts, &block)
20
+ opts = { id: id }.merge(opts) if id
21
+ dotted = DrawioDsl::Schema::Dotted.new(current_page, **opts, &block)
22
+ add_shape(dotted)
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_dashed24(id = nil, **opts, &block)
56
+ opts = { id: id }.merge(opts) if id
57
+ dashed24 = DrawioDsl::Schema::Dashed24.new(current_page, **opts, &block)
58
+ add_shape(dashed24)
59
+ end
60
+
61
+ def add_dashed32(id = nil, **opts, &block)
62
+ opts = { id: id }.merge(opts) if id
63
+ dashed32 = DrawioDsl::Schema::Dashed32.new(current_page, **opts, &block)
64
+ add_shape(dashed32)
65
+ end
66
+
67
+ def add_dashed44(id = nil, **opts, &block)
68
+ opts = { id: id }.merge(opts) if id
69
+ dashed44 = DrawioDsl::Schema::Dashed44.new(current_page, **opts, &block)
70
+ add_shape(dashed44)
71
+ end
72
+
13
73
  def add_h1(id = nil, **opts, &block)
14
74
  opts = { id: id }.merge(opts) if id
15
75
  h1 = DrawioDsl::Schema::H1.new(current_page, **opts, &block)
@@ -5,94 +5,114 @@ module DrawioDsl
5
5
  # :nocov:
6
6
  module DrawioShapes
7
7
  def random(**opts)
8
- case rand(44)
8
+ case rand(54)
9
9
  when 0
10
10
  solid(**opts)
11
11
  when 1
12
- h1(**opts)
12
+ dashed(**opts)
13
13
  when 2
14
- h2(**opts)
14
+ dotted(**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
+ dashed24(**opts)
27
27
  when 9
28
- actor2(**opts)
28
+ dashed32(**opts)
29
29
  when 10
30
- callout(**opts)
30
+ dashed44(**opts)
31
31
  when 11
32
- callout2(**opts)
32
+ h1(**opts)
33
33
  when 12
34
- callout3(**opts)
34
+ h2(**opts)
35
35
  when 13
36
- callout4(**opts)
36
+ h3(**opts)
37
37
  when 14
38
- circle(**opts)
38
+ h4(**opts)
39
39
  when 15
40
- cloud(**opts)
40
+ h5(**opts)
41
41
  when 16
42
- container(**opts)
42
+ h6(**opts)
43
43
  when 17
44
- container2(**opts)
44
+ p(**opts)
45
45
  when 18
46
- container3(**opts)
46
+ actor(**opts)
47
47
  when 19
48
- container4(**opts)
48
+ actor2(**opts)
49
49
  when 20
50
- cross(**opts)
50
+ callout(**opts)
51
51
  when 21
52
- envelop(**opts)
52
+ callout2(**opts)
53
53
  when 22
54
- database(**opts)
54
+ callout3(**opts)
55
55
  when 23
56
- db_json(**opts)
56
+ callout4(**opts)
57
57
  when 24
58
- diamond(**opts)
58
+ circle(**opts)
59
59
  when 25
60
- document(**opts)
60
+ cloud(**opts)
61
61
  when 26
62
- ellipse(**opts)
62
+ container(**opts)
63
63
  when 27
64
- group(**opts)
64
+ container2(**opts)
65
65
  when 28
66
- hexagon(**opts)
66
+ container3(**opts)
67
67
  when 29
68
- interface(**opts)
68
+ container4(**opts)
69
69
  when 30
70
- klass(**opts)
70
+ cross(**opts)
71
71
  when 31
72
- note(**opts)
72
+ envelop(**opts)
73
73
  when 32
74
- process(**opts)
74
+ database(**opts)
75
75
  when 33
76
- rectangle(**opts)
76
+ db_json(**opts)
77
77
  when 34
78
- rectangle2(**opts)
78
+ diamond(**opts)
79
79
  when 35
80
- square(**opts)
80
+ document(**opts)
81
81
  when 36
82
- step(**opts)
82
+ ellipse(**opts)
83
83
  when 37
84
- tick(**opts)
84
+ group(**opts)
85
85
  when 38
86
- todo(**opts)
86
+ hexagon(**opts)
87
87
  when 39
88
- face(**opts)
88
+ interface(**opts)
89
89
  when 40
90
- triangle(**opts)
90
+ klass(**opts)
91
91
  when 41
92
- embed_row(**opts)
92
+ note(**opts)
93
93
  when 42
94
- embed_col50(**opts)
94
+ process(**opts)
95
95
  when 43
96
+ rectangle(**opts)
97
+ when 44
98
+ rectangle2(**opts)
99
+ when 45
100
+ square(**opts)
101
+ when 46
102
+ step(**opts)
103
+ when 47
104
+ tick(**opts)
105
+ when 48
106
+ todo(**opts)
107
+ when 49
108
+ face(**opts)
109
+ when 50
110
+ triangle(**opts)
111
+ when 51
112
+ embed_row(**opts)
113
+ when 52
114
+ embed_col50(**opts)
115
+ when 53
96
116
  embed_col200(**opts)
97
117
  end
98
118
  end
@@ -101,6 +121,46 @@ module DrawioDsl
101
121
  builder.add_solid(id, **opts, &block)
102
122
  end
103
123
 
124
+ def dashed(id = nil, **opts, &block)
125
+ builder.add_dashed(id, **opts, &block)
126
+ end
127
+
128
+ def dotted(id = nil, **opts, &block)
129
+ builder.add_dotted(id, **opts, &block)
130
+ end
131
+
132
+ def dash_dot(id = nil, **opts, &block)
133
+ builder.add_dash_dot(id, **opts, &block)
134
+ end
135
+
136
+ def dash_dot_dot(id = nil, **opts, &block)
137
+ builder.add_dash_dot_dot(id, **opts, &block)
138
+ end
139
+
140
+ def dot_dot_dot(id = nil, **opts, &block)
141
+ builder.add_dot_dot_dot(id, **opts, &block)
142
+ end
143
+
144
+ def long_dash(id = nil, **opts, &block)
145
+ builder.add_long_dash(id, **opts, &block)
146
+ end
147
+
148
+ def dash_long_dash(id = nil, **opts, &block)
149
+ builder.add_dash_long_dash(id, **opts, &block)
150
+ end
151
+
152
+ def dashed24(id = nil, **opts, &block)
153
+ builder.add_dashed24(id, **opts, &block)
154
+ end
155
+
156
+ def dashed32(id = nil, **opts, &block)
157
+ builder.add_dashed32(id, **opts, &block)
158
+ end
159
+
160
+ def dashed44(id = nil, **opts, &block)
161
+ builder.add_dashed44(id, **opts, &block)
162
+ end
163
+
104
164
  def h1(id = nil, **opts, &block)
105
165
  builder.add_h1(id, **opts, &block)
106
166
  end
@@ -56,6 +56,16 @@ require_relative 'elements/embed_col200'
56
56
 
57
57
  # Connector lines
58
58
  require_relative 'lines/solid'
59
+ require_relative 'lines/dashed'
60
+ require_relative 'lines/dotted'
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/dashed24'
67
+ require_relative 'lines/dashed32'
68
+ require_relative 'lines/dashed44'
59
69
 
60
70
  # Text elements such as h1, h2, p, etc.
61
71
  require_relative 'texts/h1'
@@ -5,20 +5,28 @@ 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
+
10
+ def configure_as(key, stroke: nil)
9
11
  configure_shape(key, :line)
12
+ @default_stroke = stroke
10
13
  end
11
14
  end
12
15
 
13
16
  attr_accessor :source
14
17
  attr_accessor :target
18
+ attr_accessor :c1 # compass_point1 = :n, :ne, :e, :se, :s, :sw, :w, :nw
19
+ attr_accessor :c2 # compass_point2 = :n, :ne, :e, :se, :s, :sw, :w, :nw
20
+ attr_accessor :stroke
15
21
 
16
22
  def apply_defaults(args)
17
23
  super(args)
18
24
 
19
25
  @source = args[:source]
20
26
  @target = args[:target]
21
-
27
+ @c1 = args[:c1] || :nw
28
+ @c2 = args[:c2] || :ne
29
+ @stroke = args[:stroke] || self.class.default_stroke
22
30
  @fill_color = args[:fill_color] || theme_palette.fill_color
23
31
  @stroke_color = args[:stroke_color] || theme_palette.stroke_color
24
32
  end
@@ -26,6 +34,12 @@ module DrawioDsl
26
34
  def default_configuration
27
35
  KConfig.configuration.drawio.shape.default_line
28
36
  end
37
+
38
+ def base_modifiers
39
+ return @base_modifiers if defined? @base_modifiers
40
+
41
+ @base_modifiers = KConfig.configuration.drawio.stroke(stroke)
42
+ end
29
43
  end
30
44
  end
31
45
  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
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dashed < Line
6
+ configure_as(:dashed, stroke: :dashed)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dashed24 < Line
6
+ configure_as(:dashed24, stroke: :dashed24)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dashed32 < Line
6
+ configure_as(:dashed32, stroke: :dashed32)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dashed44 < Line
6
+ configure_as(:dashed44, stroke: :dashed44)
7
+ end
8
+ end
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
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dotted < Line
6
+ configure_as(:dotted, stroke: :dotted)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class LongDash < Line
6
+ configure_as(:long_dash, stroke: :long_dash)
7
+ end
8
+ end
9
+ end
@@ -100,6 +100,7 @@ module DrawioDsl
100
100
  key_values << "strokeColor=#{stroke_color}" if stroke_color
101
101
  key_values << "fontColor=#{font_color}" if font_color
102
102
  key_values << "gradient=#{gradient}" if gradient
103
+ key_values << base_modifiers unless base_modifiers.empty?
103
104
  key_values << style_modifiers unless style_modifiers.empty?
104
105
 
105
106
  key_values.join(';')
@@ -141,6 +142,10 @@ module DrawioDsl
141
142
  result
142
143
  end
143
144
 
145
+ def base_modifiers
146
+ @base_modifiers ||= ''
147
+ end
148
+
144
149
  def theme_palette
145
150
  @theme_palette ||= KConfig.configuration.drawio.theme.element(theme)
146
151
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DrawioDsl
4
- VERSION = '0.11.2'
4
+ VERSION = '0.11.3'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "drawio_dsl",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "drawio_dsl",
9
- "version": "0.11.2",
9
+ "version": "0.11.3",
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.11.2",
3
+ "version": "0.11.3",
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.11.2
4
+ version: 0.11.3
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-26 00:00:00.000000000 Z
11
+ date: 2022-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -257,6 +257,7 @@ files:
257
257
  - docs/printspeak-architecture-controllers.drawio
258
258
  - docs/printspeak-architecture-generator-custom.drawio
259
259
  - docs/printspeak-architecture-generator-custom.png
260
+ - docs/printspeak-architecture-generator.drawio
260
261
  - docs/printspeak-architecture-generator.svg
261
262
  - docs/project-plan.md
262
263
  - docs/project-plan/project.drawio
@@ -279,6 +280,9 @@ files:
279
280
  - docs/samples/themes-random.svg
280
281
  - docs/samples/themes-square.svg
281
282
  - docs/samples/willoughby-council.svg
283
+ - docs/tailwind_domain_model-custom.drawio
284
+ - docs/tailwind_domain_model.json
285
+ - docs/tailwind_domain_model.svg
282
286
  - lib/drawio_dsl.rb
283
287
  - lib/drawio_dsl/configuration.rb
284
288
  - lib/drawio_dsl/configuration_extension.rb
@@ -343,6 +347,16 @@ files:
343
347
  - lib/drawio_dsl/schema/layouts/grid_layout.rb
344
348
  - lib/drawio_dsl/schema/layouts/layout.rb
345
349
  - lib/drawio_dsl/schema/line.rb
350
+ - lib/drawio_dsl/schema/lines/dash_dot.rb
351
+ - lib/drawio_dsl/schema/lines/dash_dot_dot.rb
352
+ - lib/drawio_dsl/schema/lines/dash_long_dash.rb
353
+ - lib/drawio_dsl/schema/lines/dashed.rb
354
+ - lib/drawio_dsl/schema/lines/dashed24.rb
355
+ - lib/drawio_dsl/schema/lines/dashed32.rb
356
+ - lib/drawio_dsl/schema/lines/dashed44.rb
357
+ - lib/drawio_dsl/schema/lines/dot_dot_dot.rb
358
+ - lib/drawio_dsl/schema/lines/dotted.rb
359
+ - lib/drawio_dsl/schema/lines/long_dash.rb
346
360
  - lib/drawio_dsl/schema/lines/solid.rb
347
361
  - lib/drawio_dsl/schema/node.rb
348
362
  - lib/drawio_dsl/schema/node_list.rb