Skip to content

Big Ball of Yarn 🧶

Latest
Compare
Choose a tag to compare
@h0lg h0lg released this 15 Oct 13:54

If you set out to net big monsters from the deep, you can't get your tackle in a tangle - unless you want your catch to drag you out to sea like an old man.

This version focuses on adding features for big assemblies with lots of dependencies and types. Like your average UI app that explodes your domain into a bunch of view models while having countless external references to UI framework types.

Even if you painstakingly figured out where to load all the dependencies from to start extracting the type info - you could easily end up generating an HTML diagrammer with a four or five digit number of types to choose from. Stop - that's exactly what Big Mousewheel wants you to do! Instead, upgrade your gear to

  • have ILSpy side-load the source assembly and figure out where to load the dependencies from while you sit back with a cold one
  • pre-filter at generation time which types are available in the HTML diagrammer, matching their Reflection Type.FullName against Regular Expressions for including and excluding (simultaneously if you want)
  • pre-filter the type selection in the HTML diagrammer using plain text or Regular Expressions.

So go ahead, Capt'n Ahab. Drag out your worst Franken-assembly, watch ILSpy load it with a dry chuckle, set filters to Big Ball of Mud and haul in your personal Leviathan.

In detail, this release

fixes

  • processing classes that inherit from generic collections #2
  • the help text for strip-namespaces: it applies to XML documentation comments
  • restoring layout direction from the browser history
  • diagrammers for compilations containing similarly named types (like MyClass and MyClass<T>) by generating a unique ID for each Type and labelling them if required
  • some cases of applying documentation comments to the diagram
  • toggling types with generic arguments by clicking them on the diagram
  • avoiding unnecessary log errors attaching XML docs to inherited members hidden because the superclass displays them

breaking changes

  • updated generated diagrammer name to match ReadMe
  • removed redundant button to restore last rendered types and updated help on how to achieve the same using F5/Refresh
  • shortened URLs by renaming parameters and storing types as delimited string instead of array
  • replaced inheritance filter for base types (configured at generation time) with control for toggling inherited base types, interfaces and members, removing BaseTypes parameter from console app

improvements

  • replaced base64 encoding imported from a CDN with simple custom method
  • help texts of CLI and generated HTML diagrammer
  • including selected types in document title so users see which selection they return to when using a history link
  • diagrammer UX, labelling and styling
  • reducing JSON model size by
    • omitting explict null properties from serialization
    • using UNIX style line endings
    • by labelling types on the client
  • included nullable enum properties in relationships if enum is in source assembly

updates

  • the mermaid.js imported from unpkg.com to 10.5

adds

  • enabled panning and zooming output diagram
  • an input for filtering the type select focusable with [Ctrl + k]
  • a presentation mode including
    • a circle tracking the mouse to make following it easier in presentation mode with background color of circle changing to show clicks
    • a mode displaying pressed keys for presentations accessible via [Ctrl + i]
  • enabled adjusting expanded sidebar size for more space in the type select
  • save as .mmd option to save (cleaned up) mermaid diagram lingo #1
  • enabled copying diagram to clipboard in selected export type
  • supporting Mac key as alternative to Ctrl
  • options to whitelist or blacklist types by FullName and report excluded types in a separate file
  • added build info and project links
  • enabled customizing diagrammer by overriding
    • XmlDocumentationFormatter to customize XML doco format
    • ClassDiagrammerFactory to customize strategies for pre-filtering types
  • pulse-animate elements with titles for help on [Alt + i]
  • labelling inheritance from open generic types with closing generic type