StateSmith 0.7.4-alpha
This is a prerelease version of StateSmith.
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package StateSmith --version 0.7.4-alpha
NuGet\Install-Package StateSmith -Version 0.7.4-alpha
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StateSmith" Version="0.7.4-alpha" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StateSmith --version 0.7.4-alpha
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: StateSmith, 0.7.4-alpha"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StateSmith as a Cake Addin #addin nuget:?package=StateSmith&version=0.7.4-alpha&prerelease // Install StateSmith as a Cake Tool #tool nuget:?package=StateSmith&version=0.7.4-alpha&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
[0.7.4-alpha]
Added
RunnerSettings.filePathPrintBase
to control how file paths are printed.- Required when C# scripts (.csx) are used.
- https://github.com/StateSmith/StateSmith/issues/79
[0.7.3-alpha]
Added
- draw.io - add support for draw.io plugin and new drawing style where a state can have its text event handlers as a child text node instead of its label #77.
- see
src/StateSmithTest/test-input/drawio/Design1Sm.drawio.svg
or expand section below - https://github.com/StateSmith/StateSmith/issues/77
- child text must have matching style elements (in any order):
fillColor=none;gradientColor=none;strokeColor=none;resizable=0;movable=0;deletable=0;rotatable=0;
- this is already done if you use the plugin https://github.com/StateSmith/StateSmith-drawio-plugin
- see
[0.7.2-alpha]
Added
- draw.io - embedded images inside of a draw.io diagram are now ignored. Issue #77.
- images are sometimes embedded in state machine diagrams for documentation purposes.
- draw.io - treat null labels as blank instead of throwing exception. Null labels don't normally occur. Issue #77.
- improved
$notes
validations.
[0.7.1-alpha]
Added
- Add initial support for draw.io files as alternative to yEd files. https://github.com/StateSmith/StateSmith/issues/77
- Supported file extensions:
.drawio.svg
Recommended as design file is a valid svg image that can be used in markdown and other files!.drawio
.dio
- Supported file extensions:
[0.7.0-alpha]
Changed
- Generated .h file now automatically includes
<stdint.h>
(required for history states).
Added
- Add history. https://github.com/StateSmith/StateSmith/issues/63
- Deep history functionality supported via history continue nodes.
- plantuml supports history states and history continue nodes.
- Add
$prefix
methods.- Experimental feature to help with duplicate state names. https://github.com/StateSmith/StateSmith/issues/65
Fixed
- Pseudo state transition de-duplication now considers initial state parent incoming transition count too.
- Improved exit handling optimization.
[0.6.1-alpha]
Added
- Improve generated code clarity by showing step 1,2,3... and other small things.
- Improve generated code clarity by removing
if (true)
for behaviors with no guard clause. - Improve generated code by nulling
ancestor_event_handler
only when actually needed. https://github.com/StateSmith/StateSmith/issues/14 - Throw helpful exception message when duplicate state name used. Previously relied on c compiler and user to catch the problem.
VertexValidationException: Duplicate state name `OPTION` also used by state `Statemachine{LaserTagMenu1Sm}.State{MENUS_GROUP}.State{MAIN_MENU}.State{OPTION}`.
Vertex
Path: Statemachine{LaserTagMenu1Sm}.State{MENUS_GROUP}.State{MM_SHOW_INFO}.State{OPTION}
Diagram Id: n0::n3::n2::n2
Children count: 0
Behaviors count: 3
Incoming transitions count: 2
[0.6.0-alpha]
Fixed
- Fix parent self transition involving initial state incorrect https://github.com/StateSmith/StateSmith/issues/49
- StateSmith grammar fix for parsing 'e()'. https://github.com/StateSmith/StateSmith/issues/60
Changed
- Transition actions are now run after states are exited (instead of before) https://github.com/StateSmith/StateSmith/issues/6
- Reserved
else
"trigger" name forelse
functionality https://github.com/StateSmith/StateSmith/issues/59
Added
- Support
$choice
pseudo states/points https://github.com/StateSmith/StateSmith/issues/40- supported in PlantUML as well.
- Support multiple transitions for initial states, entry points, exit points. https://github.com/StateSmith/StateSmith/issues/40
- Allow multiple transitions from initial state.
- Initial state must have a default transition (always true).
- Allow incoming transitions to initial state.
- Allow multiple transitions from entry point.
- Entry point must have a default transition (always true).
- Allow incoming transitions to entry point.
- Allow multiple transitions from exit point.
- Exit point must have a default transition (always true).
- Allow specifying
else
on transitions https://github.com/StateSmith/StateSmith/issues/59 - Optimize pseudo state transitions to avoid code duplication.
- Especially important for when History states are eventually implemented as the code de-duplication savings can rack up big there.
- Improve entry and exit point validations.
- Detect duplicate labels in the same scope.
- Allow exit points to target parent state. Same as a self transition on parent.
- grammar - support backtick strings and other ASCII symbols https://github.com/StateSmith/StateSmith/issues/42
[0.5.9-alpha]
Added
- Runner - set process exit code to -1 on failure.
- Runner - output additional exception details to
<diagram_file_path>.err.txt
. This is useful for generic assert like exceptions that don't yet have useful error messages. https://github.com/StateSmith/StateSmith/issues/38 - validation - new exception:
State machines must have exactly 1 initial state. Actual count: 0.
- validation - helpful error messages for when state machine design is not found.
- Add Describe() methods for Behavior and Vertex.
- Add
TracingModder
class and experimentalRunner.postParentAliasValidation()
callback that allows graph modification.
Fixed
- Root initial transition actions are now output. Had been ignored previously. Other initial transition actions were output properly. https://github.com/StateSmith/StateSmith/issues/47
- Parent to child transition now exits current child first. https://github.com/StateSmith/StateSmith/issues/46
- Parent to self transition now exits current child first. https://github.com/StateSmith/StateSmith/issues/48
[0.5.7-alpha]
Added
- detect yEd hidden edges https://github.com/StateSmith/StateSmith/issues/29
- Better error reporting regarding diagram edge IDs.
- Improve PlantUML parsing https://github.com/StateSmith/StateSmith/issues/21
notes
, and improve parsing of malformedskinparam
blocks.
- Prevent antlr4 error output to console.
Fixed
- Now throws useful lexer stage exceptions instead of printing them and not recognizing the failure. https://github.com/StateSmith/StateSmith/issues/31
[0.5.6-alpha]
Added
- Support PlantUML input as an alternative to yEd input. Input file extension must be one of ".pu", ".puml", ".plantuml" https://github.com/StateSmith/StateSmith/issues/21
[0.5.5-alpha]
Fixed
- Fix generated comment regarding marking event as handled when not for a transition
[0.5.4-alpha]
Added
- Support
entry
andexit
points https://github.com/StateSmith/StateSmith/issues/3 - Initial support for
$PARENT_ALIAS
nodes. https://github.com/StateSmith/StateSmith/issues/2 - Improve exception error messages
[0.5.3-alpha]
Fixed
- Fix generated comment about exiting to LCA name
- Fix
FinishCodeBlock()
whenBracesOnNewLines = false;
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Antlr4.Runtime.Standard (>= 4.9.2)
- Microsoft.CodeAnalysis.CSharp (>= 3.10.0)
- System.Xml.ReaderWriter (>= 4.3.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on StateSmith:
Repository | Stars |
---|---|
StateSmith/StateSmith
A state machine code generation tool suitable for bare metal, embedded and more.
|
Version | Downloads | Last updated |
---|---|---|
0.17.1 | 4,499 | 10/16/2024 |
0.17.0 | 86 | 10/4/2024 |
0.16.0 | 92 | 9/22/2024 |
0.15.1 | 124 | 9/12/2024 |
0.15.0 | 115 | 9/9/2024 |
0.14.0 | 125 | 9/7/2024 |
0.13.2 | 113 | 9/4/2024 |
0.13.1 | 103 | 9/4/2024 |
0.13.0 | 112 | 8/30/2024 |
0.12.2-alpha | 89 | 8/29/2024 |
0.12.1-alpha | 83 | 8/29/2024 |
0.12.0-alpha | 121 | 8/19/2024 |
0.11.2-alpha | 122 | 7/6/2024 |
0.9.14-alpha | 121 | 5/25/2024 |
0.9.13-alpha | 98 | 5/14/2024 |
0.9.12-alpha | 125 | 4/29/2024 |
0.9.10-alpha | 153 | 4/24/2024 |
0.9.9-alpha | 30,243 | 8/10/2023 |
0.9.7-alpha | 157 | 7/25/2023 |
0.9.6-alpha | 202 | 6/14/2023 |
0.9.5-alpha | 145 | 5/29/2023 |
0.9.4-alpha-fix-2 | 136 | 5/26/2023 |
0.9.4-alpha | 130 | 5/19/2023 |
0.9.3-alpha | 297 | 4/30/2023 |
0.9.2-alpha | 482 | 4/21/2023 |
0.9.1-alpha | 125 | 4/17/2023 |
0.9.0-alpha | 143 | 4/16/2023 |
0.8.15-alpha | 138 | 4/15/2023 |
0.8.14-alpha-grammar-2 | 128 | 4/12/2023 |
0.8.14-alpha-grammar-1 | 143 | 4/7/2023 |
0.8.14-alpha | 145 | 4/7/2023 |
0.8.13-alpha | 161 | 4/4/2023 |
0.8.12-alpha | 159 | 3/29/2023 |
0.8.11-alpha | 147 | 3/27/2023 |
0.8.10-alpha | 143 | 3/23/2023 |
0.8.9-alpha | 162 | 3/21/2023 |
0.8.8-alpha | 159 | 3/19/2023 |
0.8.7-alpha | 151 | 3/16/2023 |
0.8.6-alpha | 135 | 3/13/2023 |
0.8.5-alpha | 142 | 3/12/2023 |
0.8.4-alpha | 148 | 3/12/2023 |
0.8.3-alpha | 143 | 3/10/2023 |
0.8.2-alpha | 149 | 3/9/2023 |
0.8.1-alpha | 207 | 3/8/2023 |
0.8.0-alpha | 148 | 3/7/2023 |
0.7.16-alpha | 145 | 2/24/2023 |
0.7.15-alpha | 142 | 2/22/2023 |
0.7.13-alpha | 151 | 2/14/2023 |
0.7.12-alpha | 185 | 2/11/2023 |
0.7.11-alpha | 157 | 2/8/2023 |
0.7.10-alpha | 151 | 2/8/2023 |
0.7.9-alpha | 144 | 2/8/2023 |
0.7.8-alpha | 140 | 2/7/2023 |
0.7.7-alpha | 151 | 2/6/2023 |
0.7.6-alpha | 160 | 2/2/2023 |
0.7.5-alpha | 154 | 2/1/2023 |
0.7.4-alpha | 164 | 1/21/2023 |
0.7.3-alpha | 161 | 1/8/2023 |
0.7.2-alpha | 162 | 1/4/2023 |
0.7.1-alpha | 152 | 1/3/2023 |
0.7.0-alpha | 169 | 12/31/2022 |
0.6.1-alpha | 158 | 12/17/2022 |
0.6.0-alpha | 204 | 12/15/2022 |
0.5.9-alpha | 182 | 10/10/2022 |
0.5.7-alpha | 179 | 9/28/2022 |
0.5.6-alpha | 191 | 9/25/2022 |
0.5.5-alpha | 179 | 9/18/2022 |
0.5.4-alpha | 181 | 9/16/2022 |
0.5.3-alpha | 163 | 9/9/2022 |
0.5.2-alpha | 156 | 9/8/2022 |
0.5.0-alpha | 184 | 9/6/2022 |