Closed laurierloi closed 2 months ago
✅ Merging this PR will increase code quality in the affected files by 3.47%.
Quality metrics | Before | After | Change |
---|---|---|---|
Complexity | 8.34 ⭐ | 7.65 ⭐ | -0.69 👍 |
Method Length | 53.56 ⭐ | 53.45 ⭐ | -0.11 👍 |
Working memory | 8.29 🙂 | 7.66 🙂 | -0.63 👍 |
Quality | 64.17% 🙂 | 67.64% 🙂 | 3.47% 👍 |
Other metrics | Before | After | Change |
---|---|---|---|
Lines | 77 | 99 | 22 |
Changed files | Quality Before | Quality After | Quality Change |
---|---|---|---|
graphviz2drawio/models/SVG.py | 96.71% ⭐ | 91.42% ⭐ | -5.29% 👎 |
graphviz2drawio/mx/NodeFactory.py | 58.96% 🙂 | 60.55% 🙂 | 1.59% 👍 |
Here are some functions in these files that still need a tune-up:
File | Function | Complexity | Length | Working Memory | Quality | Recommendation |
---|---|---|---|---|---|---|
graphviz2drawio/mx/NodeFactory.py | NodeFactory.from_svg | 15 🙂 | 193 😞 | 11 😞 | 42.99% 😞 | Try splitting into smaller methods. Extract out complex expressions |
The emojis denote the absolute quality of the code:
The 👍 and 👎 indicate whether the quality has improved or gotten worse with this pull request.
Please see our documentation here for details on how these metrics are calculated.
We are actively working on this report - lots more documentation and extra metrics to come!
Help us improve this quality report!
Any luck with merging this?
The recent updates focus on enhancing SVG handling in the graphviz2drawio
module by introducing a new svg_tag
function and integrating it with existing tag-related functions. Additionally, NodeFactory.py
now includes a method to create Rect
objects from SVG image elements. A test graph file has also been added, featuring a directed graph with tooltips.
Files/Modules | Change Summary |
---|---|
graphviz2drawio/models/SVG.py |
Refactored SVG tag handling with svg_tag function and updated get_first , is_tag , and has methods. |
graphviz2drawio/mx/NodeFactory.py |
Introduced rect_from_image static method in NodeFactory to create Rect objects from SVG images. |
test/directed/tooltip.gv.txt |
Added a new directed graph file with tooltip attributes for nodes and edges. |
Rect
from SVG Image ElementsequenceDiagram
participant User
participant NodeFactory
participant SVGElement
participant Rect
User->>NodeFactory: Call rect_from_image(attrib)
NodeFactory->>SVGElement: Extract attributes (x, y, width, height)
NodeFactory->>Rect: Create Rect object with extracted attributes
NodeFactory-->>User: Return Rect object
To code we dance, in SVG's light,
Tags and nodes now sparkle bright. 🌟
A rect from images, we now create,
In graphs, our tooltips celebrate. 🌐
With tests to guide us through the night,
Our updates shine so right, alright! 🌜🐇
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Thank you!
I encountered https://github.com/hbmartin/graphviz2drawio/issues/45 converting a graph I built.
Added a commit which solves this issue by doing tree-search instead of direct-child search in SVG.py
Also added support (somewhat) for image nodes, which I also used in my graph. They are parsed as plain rectangles with the same dimensions. The idea is that the user can replace that rectangle with the desired image. Adding the image directly to the XML seems tortuous, since they seem to have a custom encoding and we don't have access to the java library.
Summary by CodeRabbit
New Features
rect_from_image
method toNodeFactory
for extracting attributes from SVG images.Refactor