Phase 8: Graphviz coverage expansion (easy wins) - #12
Merged
Conversation
Reviews graphviz.org's documentation/attribute reference/CHANGELOG against PSGraph's current surface and closes the convenience/ discoverability gaps that turned up, reusing the module's existing attribute-set-builder pattern rather than adding new machinery: - Export-PSGraph -OutputFormat: widened from 10 to 26 accepted formats (svgz, svg_inline, eps, ps, ps2, xdot, dot_json, xdot_json, json0, canon, gv, fig, bmp, tif/tiff, wbmp, pic, plain-ext) - the old ValidateSet rejected several valid `dot -T` values outright. - Export-PSGraph -LayoutEngine: added osage and patchwork, the two Graphviz layout engines that were previously unreachable. - Graph -Strict: emits 'strict digraph'/'strict graph' to merge duplicate edges. - New-GraphAttributeSet (alias GraphAttributes): a new graph/cluster- level attribute-set builder mirroring New-NodeAttributeSet/ New-EdgeAttributeSet - rankdir previously had no dedicated parameter anywhere in the module. - New-NodeAttributeSet: added -Peripheries, -GradientAngle, -Tooltip, -URL/-Href, -XLabel, -ColorScheme; added 'radial' to -Style and 'record'/'Mrecord' to -Shape. - New-EdgeAttributeSet: added -Weight, -MinLen, -Tooltip, -URL/-Href, -XLabel. All additions verified by actually rendering through `dot` (new output formats, osage/patchwork layouts, -Strict edge merging, gradient/ colorscheme/rankdir examples), not just eyeballed. Full suite green: 463/463 (up from the 401 baseline), including PSScriptAnalyzer and comment-based-help compliance for the new command. ModuleVersion bumped to 3.2.0 (additive/non-breaking). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkdNkQkbr85iif33Q964JX
Missed when Phase 8 added the command - the readme's attribute-set section listed only the original two builders. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkdNkQkbr85iif33Q964JX
Same omission as the readme - the conceptual help topic's COMMANDS section listed only the original two attribute-set builders. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkdNkQkbr85iif33Q964JX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reviews Graphviz's own documentation (graphviz.org's attribute/shape references, the Graphviz CHANGELOG, forum.graphviz.org) against PSGraph's current surface and closes the convenience/discoverability gaps that turned up, reusing the module's existing attribute-set-builder pattern rather than adding new machinery. Every DSL keyword already accepts a generic
-Attributeshashtable passthrough, so none of this is about raw capability — it's aboutValidateSets that reject valid Graphviz values, and attributes with no dedicated parameter anywhere.Export-PSGraph -OutputFormat: widened from 10 to 26 accepted formats (svgz,svg_inline,eps,ps,ps2,xdot,dot_json,xdot_json,json0,canon,gv,fig,bmp,tif/tiff,wbmp,pic,plain-ext) — the old list rejected several validdot -Tvalues outright. List validated against a realdot -T?on the dev machine (Graphviz 15.1.1); two originally-planned formats (vml/vmlz) turned out not to exist in current Graphviz builds and were swapped forjson0/plain-ext.Export-PSGraph -LayoutEngine: addedosageandpatchwork, the two Graphviz layout engines that were previously unreachable.Graph -Strict: new switch, emitsstrict digraph/strict graphso GraphViz merges duplicate edges.New-GraphAttributeSet(aliasGraphAttributes): new graph/cluster-level attribute-set builder mirroringNew-NodeAttributeSet/New-EdgeAttributeSet—rankdirpreviously had no dedicated parameter anywhere in the module. Covers-RankDir,-Splines,-BgColor/-GradientAngle/-Style radial(gradients),-NodeSep/-RankSep,-Concentrate,-Compound,-ColorScheme,-Ratio,-Size, and graph-level font/label attributes.New-NodeAttributeSet: added-Peripheries,-GradientAngle,-Tooltip,-URL/-Href,-XLabel,-ColorScheme; added'radial'to-Styleand'record'/'Mrecord'to-Shape.New-EdgeAttributeSet: added-Weight,-MinLen,-Tooltip,-URL/-Href,-XLabel.docs/graphviz.md,Command-Graph.md,Command-Export-PSGraph.md, both existing attribute-set command pages, and a newCommand-New-GraphAttributeSet.mdwired intomkdocs.yml).CHANGELOG.md+ manifestReleaseNotesupdated;ModuleVersionbumped to3.2.0(additive/non-breaking).Test plan
-OutputFormatvalue through the realdotexecutable via-PassThruand confirmed non-empty output (eps,xdot,dot_json,canon,svg_inline,json0,plain-ext).osageandpatchwork.-Strictactually merges a duplicate edge: twoedge a bcalls render as a single edge element in the rendered SVG (count verified directly).New-GraphAttributeSet -RankDir LRdoc examples, not just checked the emitted DOT text.🤖 Generated with Claude Code
https://claude.ai/code/session_01JkdNkQkbr85iif33Q964JX