Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/StartAutomating/PSSVG

Script SVGs with PowerShell
https://github.com/StartAutomating/PSSVG

github-actions graphics graphics-programming powershell svg svg-animations svg-icons svg-images

Last synced: about 2 months ago
JSON representation

Script SVGs with PowerShell

Awesome Lists containing this project

README

        



PowerShell tools for SVG.

PSSVG helps you create Scalable Vector Graphics using PowerShell.

There is a command for every tag of the SVG standard (and then some).

For example, this script generates the image below it.

~~~PowerShell
svg (
svg.text -X 50% -Y 50% -Fontsize 36 "Hello World" -DominantBaseline middle -TextAnchor middle -Fill '#4488ff'
) -ViewBox 0,0, 200, 100
~~~



PSSVG has _a lot cooler_ [Examples](https://github.com/StartAutomating/PSSVG/tree/main/Examples) than hello world:

|Example Name |Image |
|----------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|[Animate](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Animate.PSSVG.ps1) |[Animate.svg](Examples/Animate.svg)
![Animate](Examples/Animate.svg) |
|[AnimateColor](https://github.com/StartAutomating/PSSVG/tree/main/Examples/AnimateColor.PSSVG.ps1) |[AnimateColor.svg](Examples/AnimateColor.svg)
![AnimateColor](Examples/AnimateColor.svg) |
|[AnimatedShapes](https://github.com/StartAutomating/PSSVG/tree/main/Examples/AnimatedShapes.PSSVG.ps1) |[AnimatedShapes.svg](Examples/AnimatedShapes.svg)
![AnimatedShapes](Examples/AnimatedShapes.svg) |
|[AnimateMotion](https://github.com/StartAutomating/PSSVG/tree/main/Examples/AnimateMotion.PSSVG.ps1) |[AnimateMotion.svg](Examples/AnimateMotion.svg)
![AnimateMotion](Examples/AnimateMotion.svg) |
|[Blur](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Blur.PSSVG.ps1) |[Blur.svg](Examples/Blur.svg)
![Blur](Examples/Blur.svg) |
|[BPMAnimate](https://github.com/StartAutomating/PSSVG/tree/main/Examples/BPMAnimate.PSSVG.ps1) |[BPMAnimate.svg](Examples/BPMAnimate.svg)
![BPMAnimate](Examples/BPMAnimate.svg) |
|[BPMMorph](https://github.com/StartAutomating/PSSVG/tree/main/Examples/BPMMorph.PSSVG.ps1) |[BPMMorph.svg](Examples/BPMMorph.svg)
![BPMMorph](Examples/BPMMorph.svg) |
|[BPMTriangleMorph](https://github.com/StartAutomating/PSSVG/tree/main/Examples/BPMTriangleMorph.PSSVG.ps1) |[BPMTriangleMorph.svg](Examples/BPMTriangleMorph.svg)
![BPMTriangleMorph](Examples/BPMTriangleMorph.svg) |
|[Circles](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Circles.PSSVG.ps1) |[Circles.svg](Examples/Circles.svg)
![Circles](Examples/Circles.svg) |
|[CloudAnimation](https://github.com/StartAutomating/PSSVG/tree/main/Examples/CloudAnimation.PSSVG.ps1) |[CloudAnimation.svg](Examples/CloudAnimation.svg)
![CloudAnimation](Examples/CloudAnimation.svg) |
|[Clouds](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Clouds.PSSVG.ps1) |[Clouds.svg](Examples/Clouds.svg)
![Clouds](Examples/Clouds.svg) |
|[DropShadow](https://github.com/StartAutomating/PSSVG/tree/main/Examples/DropShadow.PSSVG.ps1) |[DropShadow.svg](Examples/DropShadow.svg)
![DropShadow](Examples/DropShadow.svg) |
|[Embossed](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Embossed.PSSVG.ps1) |[Embossed.svg](Examples/Embossed.svg)
![Embossed](Examples/Embossed.svg) |
|[FadeIn](https://github.com/StartAutomating/PSSVG/tree/main/Examples/FadeIn.PSSVG.ps1) |[FadeIn.svg](Examples/FadeIn.svg)
![FadeIn](Examples/FadeIn.svg) |
|[HelloWorld](https://github.com/StartAutomating/PSSVG/tree/main/Examples/HelloWorld.PSSVG.ps1) |[HelloWorld.svg](Examples/HelloWorld.svg)
![HelloWorld](Examples/HelloWorld.svg) |
|[HexagonPattern](https://github.com/StartAutomating/PSSVG/tree/main/Examples/HexagonPattern.PSSVG.ps1) |[HexagonPattern.svg](Examples/HexagonPattern.svg)
![HexagonPattern](Examples/HexagonPattern.svg) |
|[Index](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Index.PSSVG.ps1) |[Index.svg](Examples/Index.svg)
![Index](Examples/Index.svg) |
|[LinearGradient](https://github.com/StartAutomating/PSSVG/tree/main/Examples/LinearGradient.PSSVG.ps1) |[LinearGradient.svg](Examples/LinearGradient.svg)
![LinearGradient](Examples/LinearGradient.svg) |
|[LinearGradientAnimated](https://github.com/StartAutomating/PSSVG/tree/main/Examples/LinearGradientAnimated.PSSVG.ps1)|[LinearGradientAnimated.svg](Examples/LinearGradientAnimated.svg)
![LinearGradientAnimated](Examples/LinearGradientAnimated.svg) |
|[ManyAnimatedRectangles](https://github.com/StartAutomating/PSSVG/tree/main/Examples/ManyAnimatedRectangles.PSSVG.ps1)|[ManyAnimatedRectangles.svg](Examples/ManyAnimatedRectangles.svg)
![ManyAnimatedRectangles](Examples/ManyAnimatedRectangles.svg) |
|[ManyRectangles](https://github.com/StartAutomating/PSSVG/tree/main/Examples/ManyRectangles.PSSVG.ps1) |[ManyRectangles.svg](Examples/ManyRectangles.svg)
![ManyRectangles](Examples/ManyRectangles.svg) |
|[Morphing](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Morphing.PSSVG.ps1) |[Morphing.svg](Examples/Morphing.svg)
![Morphing](Examples/Morphing.svg) |
|[MovingGradient](https://github.com/StartAutomating/PSSVG/tree/main/Examples/MovingGradient.PSSVG.ps1) |[MovingGradient.svg](Examples/MovingGradient.svg)
![MovingGradient](Examples/MovingGradient.svg) |
|[MovingShadows](https://github.com/StartAutomating/PSSVG/tree/main/Examples/MovingShadows.PSSVG.ps1) |
|[Pattern](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Pattern.PSSVG.ps1) |[Pattern.svg](Examples/Pattern.svg)
![Pattern](Examples/Pattern.svg) |
|[PatternAnimation](https://github.com/StartAutomating/PSSVG/tree/main/Examples/PatternAnimation.PSSVG.ps1) |[PatternAnimation.svg](Examples/PatternAnimation.svg)
![PatternAnimation](Examples/PatternAnimation.svg) |
|[PatternMask](https://github.com/StartAutomating/PSSVG/tree/main/Examples/PatternMask.PSSVG.ps1) |[PatternMask.svg](Examples/PatternMask.svg)
![PatternMask](Examples/PatternMask.svg) |
|[PowerShellChevron](https://github.com/StartAutomating/PSSVG/tree/main/Examples/PowerShellChevron.PSSVG.ps1) |[PowerShellChevron.svg](Examples/PowerShellChevron.svg)
![PowerShellChevron](Examples/PowerShellChevron.svg) |
|[RadialGradient](https://github.com/StartAutomating/PSSVG/tree/main/Examples/RadialGradient.PSSVG.ps1) |[RadialGradient.svg](Examples/RadialGradient.svg)
![RadialGradient](Examples/RadialGradient.svg) |
|[RadialGradientAnimated](https://github.com/StartAutomating/PSSVG/tree/main/Examples/RadialGradientAnimated.PSSVG.ps1)|[RadialGradientAnimated.svg](Examples/RadialGradientAnimated.svg)
![RadialGradientAnimated](Examples/RadialGradientAnimated.svg) |
|[RepeatedShapes](https://github.com/StartAutomating/PSSVG/tree/main/Examples/RepeatedShapes.PSSVG.ps1) |[RepeatedShapes3.svg](Examples/RepeatedShapes3.svg)
![RepeatedShapes](Examples/RepeatedShapes3.svg)
[RepeatedShapes4.svg](Examples/RepeatedShapes4.svg)
![RepeatedShapes](Examples/RepeatedShapes4.svg)
[RepeatedShapes5.svg](Examples/RepeatedShapes5.svg)
![RepeatedShapes](Examples/RepeatedShapes5.svg)
[RepeatedShapes6.svg](Examples/RepeatedShapes6.svg)
![RepeatedShapes](Examples/RepeatedShapes6.svg) |
|[Shapes](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Shapes.PSSVG.ps1) |[Shapes.svg](Examples/Shapes.svg)
![Shapes](Examples/Shapes.svg) |
|[SpinningSpiral](https://github.com/StartAutomating/PSSVG/tree/main/Examples/SpinningSpiral.PSSVG.ps1) |[SpinningSpiral15.svg](Examples/SpinningSpiral15.svg)
![SpinningSpiral](Examples/SpinningSpiral15.svg)
[SpinningSpiral636.svg](Examples/SpinningSpiral636.svg)
![SpinningSpiral](Examples/SpinningSpiral636.svg)
[SpinningSpiral741.svg](Examples/SpinningSpiral741.svg)
![SpinningSpiral](Examples/SpinningSpiral741.svg)
[SpinningSpiral901.svg](Examples/SpinningSpiral901.svg)
![SpinningSpiral](Examples/SpinningSpiral901.svg) |
|[StarRating](https://github.com/StartAutomating/PSSVG/tree/main/Examples/StarRating.PSSVG.ps1) |[StarRating.svg](Examples/StarRating.svg)
![StarRating](Examples/StarRating.svg) |
|[Stars](https://github.com/StartAutomating/PSSVG/tree/main/Examples/Stars.PSSVG.ps1) |[Stars.svg](Examples/Stars.svg)
![Stars](Examples/Stars.svg)
[Stars10.svg](Examples/Stars10.svg)
![Stars](Examples/Stars10.svg)
[Stars11.svg](Examples/Stars11.svg)
![Stars](Examples/Stars11.svg)
[Stars12.svg](Examples/Stars12.svg)
![Stars](Examples/Stars12.svg)
[Stars5.svg](Examples/Stars5.svg)
![Stars](Examples/Stars5.svg)
[Stars6.svg](Examples/Stars6.svg)
![Stars](Examples/Stars6.svg)
[Stars7.svg](Examples/Stars7.svg)
![Stars](Examples/Stars7.svg)
[Stars8.svg](Examples/Stars8.svg)
![Stars](Examples/Stars8.svg)
[Stars9.svg](Examples/Stars9.svg)
![Stars](Examples/Stars9.svg)|
|[StartAutomating](https://github.com/StartAutomating/PSSVG/tree/main/Examples/StartAutomating.PSSVG.ps1) |[StartAutomating.svg](Examples/StartAutomating.svg)
![StartAutomating](Examples/StartAutomating.svg) |
|[StopUsingGIFs](https://github.com/StartAutomating/PSSVG/tree/main/Examples/StopUsingGIFs.PSSVG.ps1) |[StopUsingGIFs.svg](Examples/StopUsingGIFs.svg)
![StopUsingGIFs](Examples/StopUsingGIFs.svg) |
|[SweepCircle](https://github.com/StartAutomating/PSSVG/tree/main/Examples/SweepCircle.PSSVG.ps1) |[SweepCircle.svg](Examples/SweepCircle.svg)
![SweepCircle](Examples/SweepCircle.svg) |
|[US-Flag](https://github.com/StartAutomating/PSSVG/tree/main/Examples/US-Flag.PSSVG.ps1) |[US-Flag.svg](Examples/US-Flag.svg)
![US-Flag](Examples/US-Flag.svg) |
|[US-FlagAnimated](https://github.com/StartAutomating/PSSVG/tree/main/Examples/US-FlagAnimated.PSSVG.ps1) |[US-FlagAnimated.svg](Examples/US-FlagAnimated.svg)
![US-FlagAnimated](Examples/US-FlagAnimated.svg) |
|[VerticalLinearGradient](https://github.com/StartAutomating/PSSVG/tree/main/Examples/VerticalLinearGradient.PSSVG.ps1)|[VerticalLinearGradient.svg](Examples/VerticalLinearGradient.svg)
![VerticalLinearGradient](Examples/VerticalLinearGradient.svg) |
|[ViewBoxAnimation](https://github.com/StartAutomating/PSSVG/tree/main/Examples/ViewBoxAnimation.PSSVG.ps1) |[ViewBoxAnimation.svg](Examples/ViewBoxAnimation.svg)
![ViewBoxAnimation](Examples/ViewBoxAnimation.svg) |

PSSVG is designed to act as a fairly complete domain specific language: every aspect of the SVG standard should be reflected in the commands of PSSVG.

The following commands are supported:

|Element |Function |Aliases |
|------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|[a](docs/SVG.a.md) |[SVG.a](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.a.ps1) |=<svg.a> |
|[animate](docs/SVG.animate.md) |[SVG.animate](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.animate.ps1) |=<svg.animate> |
|[animateMotion](docs/SVG.animateMotion.md) |[SVG.animateMotion](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.animateMotion.ps1) |=<svg.animateMotion> |
|[animateTransform](docs/SVG.animateTransform.md) |[SVG.animateTransform](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.animateTransform.ps1) |=<svg.animateTransform> |
|[ANSI](docs/SVG.ANSI.md) |[SVG.ANSI](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.ANSI.ps1) |=<svg.ANSI> |
|[ArcPath](docs/SVG.ArcPath.md) |[SVG.ArcPath](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.ArcPath.ps1) |=<SVG.ArcedPath> =<svg.ArcPath> SVG.ArcedPath |
|[circle](docs/SVG.circle.md) |[SVG.circle](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.circle.ps1) |=<svg.circle> |
|[clipPath](docs/SVG.clipPath.md) |[SVG.clipPath](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.clipPath.ps1) |=<svg.clipPath> |
|[ConvexPolygon](docs/SVG.ConvexPolygon.md) |[SVG.ConvexPolygon](https://github.com/StartAutomating/PSSVG/tree/main/CommandsShapesSVG.ConvexPolygon.ps1) |=<svg.ConvexPolygon> SVG.Decagon SVG.Dodecagon SVG.Enneadecagon SVG.Hendecagon SVG.Heptadecagon SVG.Heptagon SVG.Hexadecagon SVG.Hexagon SVG.Icosagon SVG.Icosikaidigon SVG.Icosikaienneagon SVG.Icosikaihenagon SVG.Icosikaiheptagon SVG.Icosikaihexagon SVG.Icosikaioctagon SVG.Icosikaipentagon SVG.Icositetragon SVG.Icositrigon SVG.Nonagon SVG.Octadecagon SVG.Octagon SVG.Pentadecagon SVG.Pentagon SVG.Tetradecagon SVG.Triacontagon SVG.Tridecagon|
|[CurvePath](docs/SVG.CurvePath.md) |[SVG.CurvePath](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.CurvePath.ps1) |=<SVG.CurvedPath> =<svg.CurvePath> SVG.CurvedPath |
|[defs](docs/SVG.defs.md) |[SVG.defs](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.defs.ps1) |=<svg.defs> |
|[desc](docs/SVG.desc.md) |[SVG.desc](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.desc.ps1) |=<svg.desc> |
|[discard](docs/SVG.discard.md) |[SVG.discard](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.discard.ps1) |=<svg.discard> |
|[DropShadow](docs/SVG.DropShadow.md) |[SVG.DropShadow](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.DropShadow.ps1) |=<svg.DropShadow> |
|[ellipse](docs/SVG.ellipse.md) |[SVG.ellipse](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.ellipse.ps1) |=<svg.ellipse> |
|[feBlend](docs/SVG.feBlend.md) |[SVG.feBlend](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feBlend.ps1) |=<svg.feBlend> |
|[feColorMatrix](docs/SVG.feColorMatrix.md) |[SVG.feColorMatrix](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feColorMatrix.ps1) |=<svg.feColorMatrix> |
|[feComponentTransfer](docs/SVG.feComponentTransfer.md)|[SVG.feComponentTransfer](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feComponentTransfer.ps1)|=<svg.feComponentTransfer> |
|[feComposite](docs/SVG.feComposite.md) |[SVG.feComposite](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feComposite.ps1) |=<svg.feComposite> |
|[feConvolveMatrix](docs/SVG.feConvolveMatrix.md) |[SVG.feConvolveMatrix](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feConvolveMatrix.ps1) |=<svg.feConvolveMatrix> |
|[feDiffuseLighting](docs/SVG.feDiffuseLighting.md) |[SVG.feDiffuseLighting](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feDiffuseLighting.ps1) |=<svg.feDiffuseLighting> |
|[feDisplacementMap](docs/SVG.feDisplacementMap.md) |[SVG.feDisplacementMap](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feDisplacementMap.ps1) |=<svg.feDisplacementMap> |
|[feDistantLight](docs/SVG.feDistantLight.md) |[SVG.feDistantLight](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feDistantLight.ps1) |=<svg.feDistantLight> |
|[feDropShadow](docs/SVG.feDropShadow.md) |[SVG.feDropShadow](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feDropShadow.ps1) |=<svg.feDropShadow> |
|[feFlood](docs/SVG.feFlood.md) |[SVG.feFlood](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feFlood.ps1) |=<svg.feFlood> |
|[feFuncA](docs/SVG.feFuncA.md) |[SVG.feFuncA](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feFuncA.ps1) |=<svg.feFuncA> |
|[feFuncB](docs/SVG.feFuncB.md) |[SVG.feFuncB](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feFuncB.ps1) |=<svg.feFuncB> |
|[feFuncG](docs/SVG.feFuncG.md) |[SVG.feFuncG](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feFuncG.ps1) |=<svg.feFuncG> |
|[feFuncR](docs/SVG.feFuncR.md) |[SVG.feFuncR](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feFuncR.ps1) |=<svg.feFuncR> |
|[feGaussianBlur](docs/SVG.feGaussianBlur.md) |[SVG.feGaussianBlur](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feGaussianBlur.ps1) |=<svg.feGaussianBlur> |
|[feImage](docs/SVG.feImage.md) |[SVG.feImage](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feImage.ps1) |=<svg.feImage> |
|[feMerge](docs/SVG.feMerge.md) |[SVG.feMerge](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feMerge.ps1) |=<svg.feMerge> |
|[feMergeNode](docs/SVG.feMergeNode.md) |[SVG.feMergeNode](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feMergeNode.ps1) |=<svg.feMergeNode> |
|[feMorphology](docs/SVG.feMorphology.md) |[SVG.feMorphology](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feMorphology.ps1) |=<svg.feMorphology> |
|[feOffset](docs/SVG.feOffset.md) |[SVG.feOffset](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feOffset.ps1) |=<svg.feOffset> |
|[fePointLight](docs/SVG.fePointLight.md) |[SVG.fePointLight](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.fePointLight.ps1) |=<svg.fePointLight> |
|[feSpecularLighting](docs/SVG.feSpecularLighting.md) |[SVG.feSpecularLighting](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feSpecularLighting.ps1) |=<svg.feSpecularLighting> |
|[feSpotLight](docs/SVG.feSpotLight.md) |[SVG.feSpotLight](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feSpotLight.ps1) |=<svg.feSpotLight> |
|[feTile](docs/SVG.feTile.md) |[SVG.feTile](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feTile.ps1) |=<svg.feTile> |
|[feTurbulence](docs/SVG.feTurbulence.md) |[SVG.feTurbulence](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.feTurbulence.ps1) |=<svg.feTurbulence> |
|[filter](docs/SVG.filter.md) |[SVG.filter](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.filter.ps1) |=<svg.filter> |
|[foreignObject](docs/SVG.foreignObject.md) |[SVG.foreignObject](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.foreignObject.ps1) |=<svg.foreignObject> |
|[g](docs/SVG.g.md) |[SVG.g](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.g.ps1) |=<svg.g> |
|[GoogleFont](docs/SVG.GoogleFont.md) |[SVG.GoogleFont](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.GoogleFont.ps1) |=<svg.GoogleFont> |
|[image](docs/SVG.image.md) |[SVG.image](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.image.ps1) |=<svg.image> |
|[Kite](docs/SVG.Kite.md) |[SVG.Kite](https://github.com/StartAutomating/PSSVG/tree/main/CommandsShapesSVG.Kite.ps1) |=<svg.Kite> SVG.Rhombuses |
|[line](docs/SVG.line.md) |[SVG.line](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.line.ps1) |=<svg.line> |
|[linearGradient](docs/SVG.linearGradient.md) |[SVG.linearGradient](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.linearGradient.ps1) |=<svg.linearGradient> |
|[LinePath](docs/SVG.LinePath.md) |[SVG.LinePath](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.LinePath.ps1) |=<SVG.LinedPath> =<svg.LinePath> SVG.LinedPath |
|[marker](docs/SVG.marker.md) |[SVG.marker](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.marker.ps1) |=<svg.marker> |
|[mask](docs/SVG.mask.md) |[SVG.mask](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.mask.ps1) |=<svg.mask> |
|[metadata](docs/SVG.metadata.md) |[SVG.metadata](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.metadata.ps1) |=<svg.metadata> |
|[mpath](docs/SVG.mpath.md) |[SVG.mpath](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.mpath.ps1) |=<svg.mpath> |
|[path](docs/SVG.path.md) |[SVG.path](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.path.ps1) |=<svg.path> |
|[pattern](docs/SVG.pattern.md) |[SVG.pattern](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.pattern.ps1) |=<svg.pattern> |
|[polygon](docs/SVG.polygon.md) |[SVG.polygon](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.polygon.ps1) |=<svg.polygon> |
|[polyline](docs/SVG.polyline.md) |[SVG.polyline](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.polyline.ps1) |=<svg.polyline> |
|[radialGradient](docs/SVG.radialGradient.md) |[SVG.radialGradient](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.radialGradient.ps1) |=<svg.radialGradient> |
|[rect](docs/SVG.rect.md) |[SVG.rect](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.rect.ps1) |=<svg.rect> |
|[Rhombus](docs/SVG.Rhombus.md) |[SVG.Rhombus](https://github.com/StartAutomating/PSSVG/tree/main/CommandsShapesSVG.Rhombus.ps1) |=<svg.Rhombus> SVG.Rhombi |
|[script](docs/SVG.script.md) |[SVG.script](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.script.ps1) |=<svg.script> |
|[set](docs/SVG.set.md) |[SVG.set](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.set.ps1) |=<svg.set> |
|[Spiral](docs/SVG.Spiral.md) |[SVG.Spiral](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.Spiral.ps1) |=<svg.Spiral> |
|[Star](docs/SVG.Star.md) |[SVG.Star](https://github.com/StartAutomating/PSSVG/tree/main/CommandsShapesSVG.Star.ps1) |=<svg.Star> |
|[stop](docs/SVG.stop.md) |[SVG.stop](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.stop.ps1) |=<svg.stop> |
|[style](docs/SVG.style.md) |[SVG.style](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.style.ps1) |=<svg.style> |
|[StyleSheet](docs/SVG.StyleSheet.md) |[SVG.StyleSheet](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.StyleSheet.ps1) |=<svg.StyleSheet> |
|[svg](docs/SVG.svg.md) |[SVG.svg](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.svg.ps1) |=<svg> svg |
|[switch](docs/SVG.switch.md) |[SVG.switch](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.switch.ps1) |=<svg.switch> |
|[symbol](docs/SVG.symbol.md) |[SVG.symbol](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.symbol.ps1) |=<svg.symbol> |
|[text](docs/SVG.text.md) |[SVG.text](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.text.ps1) |=<svg.text> |
|[textPath](docs/SVG.textPath.md) |[SVG.textPath](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.textPath.ps1) |=<svg.textPath> |
|[title](docs/SVG.title.md) |[SVG.title](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.title.ps1) |=<svg.title> |
|[Triangle](docs/SVG.Triangle.md) |[SVG.Triangle](https://github.com/StartAutomating/PSSVG/tree/main/CommandsCustomSVG.Triangle.ps1) |=<svg.Triangle> |
|[tspan](docs/SVG.tspan.md) |[SVG.tspan](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.tspan.ps1) |=<svg.tspan> |
|[use](docs/SVG.use.md) |[SVG.use](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.use.ps1) |=<svg.use> |
|[view](docs/SVG.view.md) |[SVG.view](https://github.com/StartAutomating/PSSVG/tree/main/CommandsStandardSVG.view.ps1) |=<svg.view> |

(elements marked deprecated are not supported)

## Goals

PSSVG hopes to be a useful toolkit for generating SVG images from PowerShell.

SVG has many benefits as an image file format, for example:
* File Size
* Scalability
* Animations
* Clickability
* HTML/JavaScript/CSS integration
* OS Integration

However, it is not a complete programming language.

Thus the primary goal is to make SVG creation scriptable.

### Limitations

At current, PSSVG does not support aria attributes. Events can be generically specified with the parameter -On.

### How PSSVG is Built

In order to provide an ideal PowerShell experience with rich help,
PSSVG is currently built by reading the contents of the [Mozilla Developer Network's content repository](https://github.com/mdn/content).

It uses two PowerShell modules to read the repository and create the commands:

* [Irregular](https://github.com/StartAutomating/Irregular) is used to help parse the markdown contents of the repository
* [PipeScript](https://github.com/StartAutomating/PipeScript) is used to create the functions from the parsed data.