drawio_dsl 0.11.2 → 0.11.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/config/configuration.json +299 -36
  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 +107 -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/configuration.rb +52 -5
  18. data/lib/drawio_dsl/dom_builder_shapes.rb +78 -0
  19. data/lib/drawio_dsl/drawio_extensions_active.rb +1 -0
  20. data/lib/drawio_dsl/drawio_shapes.rb +121 -43
  21. data/lib/drawio_dsl/schema/_.rb +13 -0
  22. data/lib/drawio_dsl/schema/line.rb +44 -2
  23. data/lib/drawio_dsl/schema/lines/dash.rb +9 -0
  24. data/lib/drawio_dsl/schema/lines/dash24.rb +9 -0
  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/dot.rb +9 -0
  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/version.rb +1 -1
  38. data/package-lock.json +2 -2
  39. data/package.json +1 -1
  40. metadata +19 -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>
@@ -211,14 +211,49 @@ module DrawioDsl
211
211
  class Connector
212
212
  attr_reader :source_config
213
213
 
214
- XyConfig = Struct.new(:x, :y, keyword_init: true)
214
+ class CompassPoint
215
+ attr_reader :x
216
+ attr_reader :y
217
+
218
+ def initialize(x, y)
219
+ @x = x
220
+ @y = y
221
+ end
222
+
223
+ # should this be start/end
224
+ def exit_modifiers
225
+ "exitX=#{x};exitY=#{y};exitDx=0;exitDy=0"
226
+ end
227
+
228
+ def entry_modifiers
229
+ "entryX=#{x};entryY=#{y};entryDx=0;entryDy=0"
230
+ end
231
+ end
232
+
233
+ class Arrow
234
+ attr_reader :image
235
+ attr_reader :fill
236
+
237
+ def initialize(image, fill)
238
+ @image = image
239
+ @fill = fill
240
+ end
241
+
242
+ def start_modifiers
243
+ "startArrow=#{image};startFill=#{fill}"
244
+ end
245
+
246
+ def end_modifiers
247
+ "endArrow=#{image};endFill=#{fill}"
248
+ end
249
+ end
215
250
 
216
251
  def initialize(source_config)
217
252
  @source_config = source_config
218
253
  end
219
254
 
220
255
  def compass_point(key)
221
- compass_points[key] || XyConfig.new(x: 0, y: 0)
256
+ compass_points[key] || CompassPoint.new(0, 0)
222
257
  end
223
258
 
224
259
  def compass_points
@@ -226,7 +261,7 @@ module DrawioDsl
226
261
 
227
262
  @compass_points = {}
228
263
  source_config['compass_points'].each do |compass_point|
229
- @compass_points[compass_point['key'].to_sym] = XyConfig.new(x: compass_point['x'], y: compass_point['y'])
264
+ @compass_points[compass_point['key'].to_sym] = CompassPoint.new(compass_point['x'], compass_point['y'])
230
265
  end
231
266
 
232
267
  @compass_points
@@ -247,8 +282,12 @@ module DrawioDsl
247
282
  @waypoints
248
283
  end
249
284
 
285
+ def random_waypoint_key
286
+ waypoints.keys.sample
287
+ end
288
+
250
289
  def arrow(key)
251
- arrows[key] || 'open'
290
+ arrows[key] || Arrow.new('open', 1)
252
291
  end
253
292
 
254
293
  def arrows
@@ -256,12 +295,20 @@ module DrawioDsl
256
295
 
257
296
  @arrows = {}
258
297
  source_config['arrows'].each do |arrow|
259
- @arrows[arrow['key'].to_sym] = arrow['style']
298
+ @arrows[arrow['key'].to_sym] = Arrow.new(arrow['image'], arrow['fill'])
260
299
  end
261
300
 
262
301
  @arrows
263
302
  end
264
303
 
304
+ def arrow_keys
305
+ arrows.keys
306
+ end
307
+
308
+ def random_arrow_key
309
+ arrows.keys.sample
310
+ end
311
+
265
312
  def design(key)
266
313
  designs[key] || ''
267
314
  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)
@@ -23,6 +23,7 @@ module DrawioDsl
23
23
  shape=partialRectangle;right=0;left=0
24
24
  ]
25
25
 
26
+ puts 33
26
27
  return false if style.empty?
27
28
  return false if ban.include?(style)
28
29
 
@@ -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'
@@ -5,27 +5,69 @@ 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
+ attr_reader :default_waypoint
11
+
12
+ def configure_as(key, stroke: nil, design: nil, waypoint: :straight)
9
13
  configure_shape(key, :line)
14
+
15
+ @default_stroke = stroke
16
+ @default_design = design
17
+ @default_waypoint = waypoint
10
18
  end
11
19
  end
12
20
 
13
21
  attr_accessor :source
14
22
  attr_accessor :target
23
+ attr_accessor :exit_point # compass_point1 = :n, :ne, :e, :se, :s, :sw, :w, :nw
24
+ attr_accessor :entry_point # compass_point2 = :n, :ne, :e, :se, :s, :sw, :w, :nw
25
+ attr_accessor :start_arrow
26
+ attr_accessor :end_arrow
27
+ attr_accessor :stroke
28
+ attr_accessor :design
29
+ attr_accessor :waypoint
15
30
 
31
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
16
32
  def apply_defaults(args)
17
33
  super(args)
18
34
 
19
35
  @source = args[:source]
20
36
  @target = args[:target]
21
-
37
+ @exit_point = args[:exit_point] || args[:start_point] || :nw
38
+ @entry_point = args[:entry_point] || args[:end_point] || :ne
39
+ @start_arrow = args[:start_arrow] || :none
40
+ @end_arrow = args[:end_arrow] || :simple
41
+ @stroke = args[:stroke] || self.class.default_stroke
42
+ @design = args[:design] || self.class.default_design
43
+ @waypoint = args[:waypoint] || self.class.default_waypoint || :straight
22
44
  @fill_color = args[:fill_color] || theme_palette.fill_color
23
45
  @stroke_color = args[:stroke_color] || theme_palette.stroke_color
24
46
  end
47
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
25
48
 
26
49
  def default_configuration
27
50
  KConfig.configuration.drawio.shape.default_line
28
51
  end
52
+
53
+ # rubocop:disable Metrics/AbcSize
54
+ def base_modifiers
55
+ return @base_modifiers if defined? @base_modifiers
56
+
57
+ # log.kv 'waypoint', waypoint
58
+ # log.kv 'waypoint_modifier', KConfig.configuration.drawio.connector.waypoint(waypoint)
59
+
60
+ @base_modifiers = [
61
+ KConfig.configuration.drawio.stroke(stroke),
62
+ KConfig.configuration.drawio.connector.waypoint(waypoint),
63
+ KConfig.configuration.drawio.connector.design(design),
64
+ KConfig.configuration.drawio.connector.compass_point(exit_point).exit_modifiers,
65
+ KConfig.configuration.drawio.connector.compass_point(entry_point).entry_modifiers,
66
+ KConfig.configuration.drawio.connector.arrow(start_arrow).start_modifiers,
67
+ KConfig.configuration.drawio.connector.arrow(end_arrow).end_modifiers
68
+ ].reject(&:empty?).join(';')
69
+ end
70
+ # rubocop:enable Metrics/AbcSize
29
71
  end
30
72
  end
31
73
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dash < Line
6
+ configure_as(:dash, stroke: :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 Dash24 < Line
6
+ configure_as(:dash24, stroke: :dash24)
7
+ end
8
+ end
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
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ class Dot < Line
6
+ configure_as(:dot, stroke: :dot)
7
+ end
8
+ end
9
+ end