├── .dagger ├── .gitattributes ├── .gitignore ├── composer.json ├── entrypoint.php └── src │ └── Finite.php ├── .dockerignore ├── .editorconfig ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .gitmodules ├── .php-cs-fixer.dist.php ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── composer.json ├── dagger.json ├── examples └── basic-graph.php ├── infection.json5 ├── phpunit.xml.dist ├── psalm.xml ├── src ├── Dumper │ ├── Dumper.php │ └── MermaidDumper.php ├── Event │ ├── CanTransitionEvent.php │ ├── Event.php │ ├── EventDispatcher.php │ ├── PostTransitionEvent.php │ ├── PreTransitionEvent.php │ └── TransitionEvent.php ├── Exception │ ├── BadStateClassException.php │ ├── FiniteException.php │ ├── NoStateFoundException.php │ ├── NonUniqueStateException.php │ ├── PropertyNotFoundException.php │ └── TransitionNotReachableException.php ├── Extension │ ├── Symfony │ │ ├── Bundle │ │ │ ├── DependencyInjection │ │ │ │ └── FiniteExtension.php │ │ │ └── FiniteBundle.php │ │ └── Command │ │ │ └── DumpStateMachineCommand.php │ └── Twig │ │ └── FiniteExtension.php ├── Extractor │ ├── MemoizedStatePropertyExtractor.php │ ├── ReflectionStatePropertyExtractor.php │ ├── StatePropertyExtractor.php │ └── StatePropertyExtractorTrait.php ├── State.php ├── StateMachine.php └── Transition │ ├── Transition.php │ └── TransitionInterface.php └── tests ├── Dumper └── MermaidDumperTest.php ├── E2E ├── AlternativeGraphTest.php └── BasicGraphTest.php ├── Event ├── CanTransitionEventTest.php └── EventDispatcherTest.php ├── Extension ├── Symfony │ ├── Bundle │ │ └── DependencyInjection │ │ │ └── FiniteExtensionTest.php │ ├── Command │ │ └── DumpStateMachineCommandTest.php │ ├── Fixtures │ │ ├── Controller │ │ │ └── FiniteController.php │ │ ├── Model │ │ │ └── Document.php │ │ ├── State │ │ │ ├── DocumentState.php │ │ │ └── NonStateEnum.php │ │ └── app │ │ │ ├── AppKernel.php │ │ │ ├── bootstrap.php │ │ │ └── templates │ │ │ └── finite.html.twig │ ├── Functional │ │ └── FiniteTest.php │ └── ServiceTest.php └── Twig │ └── FiniteExtensionTest.php ├── Extractor ├── MemoizedStatePropertyExtractorTest.php └── ReflectionStatePropertyExtractorTest.php ├── Fixtures ├── AlternativeArticle.php ├── AlternativeArticleState.php ├── Article.php ├── ChildArticle.php ├── MockableState.php ├── MockableStateObject.php ├── MockableTransitionProvider.php └── SimpleArticleState.php ├── StateMachineTest.php └── Transition └── TransitionTest.php /.dagger/.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.dagger/.gitattributes -------------------------------------------------------------------------------- /.dagger/.gitignore: -------------------------------------------------------------------------------- 1 | /sdk 2 | /vendor 3 | -------------------------------------------------------------------------------- /.dagger/composer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.dagger/composer.json -------------------------------------------------------------------------------- /.dagger/entrypoint.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.dagger/entrypoint.php -------------------------------------------------------------------------------- /.dagger/src/Finite.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.dagger/src/Finite.php -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.dockerignore -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.editorconfig -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.php-cs-fixer.dist.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/.php-cs-fixer.dist.php -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/README.md -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/composer.json -------------------------------------------------------------------------------- /dagger.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/dagger.json -------------------------------------------------------------------------------- /examples/basic-graph.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/examples/basic-graph.php -------------------------------------------------------------------------------- /infection.json5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/infection.json5 -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/phpunit.xml.dist -------------------------------------------------------------------------------- /psalm.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/psalm.xml -------------------------------------------------------------------------------- /src/Dumper/Dumper.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Dumper/Dumper.php -------------------------------------------------------------------------------- /src/Dumper/MermaidDumper.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Dumper/MermaidDumper.php -------------------------------------------------------------------------------- /src/Event/CanTransitionEvent.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Event/CanTransitionEvent.php -------------------------------------------------------------------------------- /src/Event/Event.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Event/Event.php -------------------------------------------------------------------------------- /src/Event/EventDispatcher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Event/EventDispatcher.php -------------------------------------------------------------------------------- /src/Event/PostTransitionEvent.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Event/PostTransitionEvent.php -------------------------------------------------------------------------------- /src/Event/PreTransitionEvent.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Event/PreTransitionEvent.php -------------------------------------------------------------------------------- /src/Event/TransitionEvent.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Event/TransitionEvent.php -------------------------------------------------------------------------------- /src/Exception/BadStateClassException.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Exception/BadStateClassException.php -------------------------------------------------------------------------------- /src/Exception/FiniteException.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Exception/FiniteException.php -------------------------------------------------------------------------------- /src/Exception/NoStateFoundException.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Exception/NoStateFoundException.php -------------------------------------------------------------------------------- /src/Exception/NonUniqueStateException.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Exception/NonUniqueStateException.php -------------------------------------------------------------------------------- /src/Exception/PropertyNotFoundException.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Exception/PropertyNotFoundException.php -------------------------------------------------------------------------------- /src/Exception/TransitionNotReachableException.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Exception/TransitionNotReachableException.php -------------------------------------------------------------------------------- /src/Extension/Symfony/Bundle/DependencyInjection/FiniteExtension.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extension/Symfony/Bundle/DependencyInjection/FiniteExtension.php -------------------------------------------------------------------------------- /src/Extension/Symfony/Bundle/FiniteBundle.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extension/Symfony/Bundle/FiniteBundle.php -------------------------------------------------------------------------------- /src/Extension/Symfony/Command/DumpStateMachineCommand.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extension/Symfony/Command/DumpStateMachineCommand.php -------------------------------------------------------------------------------- /src/Extension/Twig/FiniteExtension.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extension/Twig/FiniteExtension.php -------------------------------------------------------------------------------- /src/Extractor/MemoizedStatePropertyExtractor.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extractor/MemoizedStatePropertyExtractor.php -------------------------------------------------------------------------------- /src/Extractor/ReflectionStatePropertyExtractor.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extractor/ReflectionStatePropertyExtractor.php -------------------------------------------------------------------------------- /src/Extractor/StatePropertyExtractor.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extractor/StatePropertyExtractor.php -------------------------------------------------------------------------------- /src/Extractor/StatePropertyExtractorTrait.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Extractor/StatePropertyExtractorTrait.php -------------------------------------------------------------------------------- /src/State.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/State.php -------------------------------------------------------------------------------- /src/StateMachine.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/StateMachine.php -------------------------------------------------------------------------------- /src/Transition/Transition.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Transition/Transition.php -------------------------------------------------------------------------------- /src/Transition/TransitionInterface.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/src/Transition/TransitionInterface.php -------------------------------------------------------------------------------- /tests/Dumper/MermaidDumperTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Dumper/MermaidDumperTest.php -------------------------------------------------------------------------------- /tests/E2E/AlternativeGraphTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/E2E/AlternativeGraphTest.php -------------------------------------------------------------------------------- /tests/E2E/BasicGraphTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/E2E/BasicGraphTest.php -------------------------------------------------------------------------------- /tests/Event/CanTransitionEventTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Event/CanTransitionEventTest.php -------------------------------------------------------------------------------- /tests/Event/EventDispatcherTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Event/EventDispatcherTest.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Bundle/DependencyInjection/FiniteExtensionTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Bundle/DependencyInjection/FiniteExtensionTest.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Command/DumpStateMachineCommandTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Command/DumpStateMachineCommandTest.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/Controller/FiniteController.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/Controller/FiniteController.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/Model/Document.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/Model/Document.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/State/DocumentState.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/State/DocumentState.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/State/NonStateEnum.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/State/NonStateEnum.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/app/AppKernel.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/app/AppKernel.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/app/bootstrap.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/app/bootstrap.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/Fixtures/app/templates/finite.html.twig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Fixtures/app/templates/finite.html.twig -------------------------------------------------------------------------------- /tests/Extension/Symfony/Functional/FiniteTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/Functional/FiniteTest.php -------------------------------------------------------------------------------- /tests/Extension/Symfony/ServiceTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Symfony/ServiceTest.php -------------------------------------------------------------------------------- /tests/Extension/Twig/FiniteExtensionTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extension/Twig/FiniteExtensionTest.php -------------------------------------------------------------------------------- /tests/Extractor/MemoizedStatePropertyExtractorTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extractor/MemoizedStatePropertyExtractorTest.php -------------------------------------------------------------------------------- /tests/Extractor/ReflectionStatePropertyExtractorTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Extractor/ReflectionStatePropertyExtractorTest.php -------------------------------------------------------------------------------- /tests/Fixtures/AlternativeArticle.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/AlternativeArticle.php -------------------------------------------------------------------------------- /tests/Fixtures/AlternativeArticleState.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/AlternativeArticleState.php -------------------------------------------------------------------------------- /tests/Fixtures/Article.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/Article.php -------------------------------------------------------------------------------- /tests/Fixtures/ChildArticle.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/ChildArticle.php -------------------------------------------------------------------------------- /tests/Fixtures/MockableState.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/MockableState.php -------------------------------------------------------------------------------- /tests/Fixtures/MockableStateObject.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/MockableStateObject.php -------------------------------------------------------------------------------- /tests/Fixtures/MockableTransitionProvider.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/MockableTransitionProvider.php -------------------------------------------------------------------------------- /tests/Fixtures/SimpleArticleState.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Fixtures/SimpleArticleState.php -------------------------------------------------------------------------------- /tests/StateMachineTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/StateMachineTest.php -------------------------------------------------------------------------------- /tests/Transition/TransitionTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yohang/Finite/HEAD/tests/Transition/TransitionTest.php --------------------------------------------------------------------------------