44namespace Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node ;
55
66use Exception ;
7- use PhpParser \Node ;
87use PhpParser \Node \Stmt ;
9- use PhpParser \Node \Stmt \ClassLike ;
108use PhpParser \NodeFinder ;
119use PhpParser \NodeTraverser ;
1210use PhpParser \NodeVisitor \NameResolver ;
1715use Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node \Connector \DependencyConnector ;
1816use Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node \Connector \InheritanceConnector ;
1917use Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node \Connector \RealizationConnector ;
18+ use Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node \Connector \TraitUsageConnector ;
2019use Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node \Exception \CannnotParseToClassLikeException ;
2120use Tasuku43 \MermaidClassDiagram \ClassDiagramRenderer \Node \Node as ClassDiagramNode ;
2221
@@ -37,6 +36,7 @@ public function __construct(
3736 fn (Stmt \Interface_ |Stmt \Class_ |Stmt \Enum_ |Stmt \Trait_ $ classLike , ClassDiagramNode $ classDiagramNode ) => RealizationConnector::parse ($ classLike , $ classDiagramNode ),
3837 fn (Stmt \Interface_ |Stmt \Class_ |Stmt \Enum_ |Stmt \Trait_ $ classLike , ClassDiagramNode $ classDiagramNode ) => CompositionConnector::parse ($ nodeFinder , $ classLike , $ classDiagramNode ),
3938 fn (Stmt \Interface_ |Stmt \Class_ |Stmt \Enum_ |Stmt \Trait_ $ classLike , ClassDiagramNode $ classDiagramNode ) => DependencyConnector::parse ($ nodeFinder , $ classLike , $ classDiagramNode ),
39+ fn (Stmt \Interface_ |Stmt \Class_ |Stmt \Enum_ |Stmt \Trait_ $ classLike , ClassDiagramNode $ classDiagramNode ) => TraitUsageConnector::parse ($ nodeFinder , $ classLike , $ classDiagramNode ),
4040 ];
4141 }
4242
@@ -111,7 +111,8 @@ private function parseClassLikes(string $code): array
111111 $ validClassLikes = array_filter ($ allClassLikes , function ($ node ) {
112112 return $ node instanceof Stmt \Class_
113113 || $ node instanceof Stmt \Interface_
114- || $ node instanceof Stmt \Enum_;
114+ || $ node instanceof Stmt \Enum_
115+ || $ node instanceof Stmt \Trait_;
115116 });
116117
117118 if (empty ($ validClassLikes )) {
@@ -132,6 +133,7 @@ private function createClassDiagramNodeFromClassLike($classLike): ClassDiagramNo
132133 : new Class_ ((string )$ classLike ->name ->name ),
133134 $ classLike instanceof Stmt \Interface_ => new Interface_ ((string )$ classLike ->name ->name ),
134135 $ classLike instanceof Stmt \Enum_ => new Enum_ ((string )$ classLike ->name ->name ),
136+ $ classLike instanceof Stmt \Trait_ => new Trait_ ((string )$ classLike ->name ->name ),
135137 default => throw new Exception ('Unexpected match value: ' . get_class ($ classLike ))
136138 };
137139 }
0 commit comments