LxLeChat / FlowChartCore

PowerShell Module Written in C# to create DOT graphs from PS Scripts
MIT License
18 stars 3 forks source link

Nom des digraph #110

Closed LxLeChat closed 3 years ago

LxLeChat commented 3 years ago

hummm... pour l'instant le nom des digraph généré c'est ça ...

digraph "a" {

ne vaudrait il pas le coup de:

?! Je ne sais pas si les nom des digraph peuvent contenir des espaces ou des characteres spéciaux...

LxLeChat commented 3 years ago

J'ai ajouté 2 propriétés aux objets :

J'ai du changer dans ma classe utility la création des noeuds, l'ajout de ces 2 propriétés. Seul soucis c'est que ces propriétés ne sont pas "protégés", puisque on ne passe pas par le constructeur pour remplir ces champs ... du coup on peut modifier ces propriétés ce qui m embete un peu ! Je pourrais créer un override des constructeur sur chaque classe ... à voir !

en tout cas l'ajout de ces 2 propriétés permettrait de correctement nommé le graph !

LxLeChat commented 3 years ago

bon j'ai fit un truc un peu à l'arrache... Je vais pas modifier les constructeurs pour l'instant car c'est long à faire.

en tout cas maintenat on obtient ça: image

ou ça: image

qu'en penses tu @LaurentDardenne ? maintenant je me dis, est ce qu'il ne faudrait pas pouvoir sortir des fichiers par graph ??? quand on fait un :dir *.ps1 | get-flo... | new-flo... on veut tet pouvoir sauvegarder ces fichiers non ?

LxLeChat commented 3 years ago

hummm après réexamen de mon code, je vais positionné ces propriétés au niveau de l'objet Tree... comme ça pas besoin de polluer les nodes.

Edit J'ai aijouté une méthode GetTree à la classe de base Node qui me permet à partir de n'importe ou dans l'arbre de retourner l'objet tree qui lui contiendra l'origine scriptblock ou file, et le fileinfo dans le deuxième cas. Du coup j'ai aussi ajouté deux constructeurs à ma classe tree, pour gérer ces 2 sources différentes

Du coup on peut aussi faire ça maintenant :

$x = Get-FLowChartNode -Path C:\temp\laurent.ps1
$tree = $x.GetTree()
$tree = $x[1].Children[1].Children[0].Children[1].Children[1].Children[0].GetTree()

#ça retournera la même chose

Nodes                             Ast
-----                             ---
{CodeNode, ForeachNode, CodeNode} [CmdletBinding()]…

$tree.NodesOrigin
File

$tree.FileInfo
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          15/05/2021    11:01           3408 laurent.ps1

Bon enfait si on le fait sur le tableau ça retourne autant de fois qu'il y a de node de niveau 0 mais ça spas grave :) L'idée était de pouvoir accéder à l'arbre depuis n'importe ou, et de ne pas stocker l'origine et le fileInfo sur les nodes !

LxLeChat commented 3 years ago

bon je crois que je vais merger cette feature ... !