pyfcstm.entry.plantuml

State Machine DSL to PlantUML CLI Integration.

This module integrates a PlantUML generator into a Click-based command-line interface. It provides a subcommand that reads state machine DSL code from a file, parses it into an internal model, and emits PlantUML text either to a file or to standard output.

The module is intended to be used as part of a larger CLI application that manages multiple subcommands. It does not expose any public API directly; instead, it contributes functionality through the helper function that registers the subcommand.

Note

The CLI entry point relies on pyfcstm.dsl.parse.parse_with_grammar_entry() and pyfcstm.model.model.parse_dsl_node_to_state_machine() to build the model and assumes the input file contains valid state machine DSL content.

Example:

>>> import click
>>> from pyfcstm.entry.plantuml import _add_plantuml_subcommand
>>> cli = click.Group()
>>> _add_plantuml_subcommand(cli)  
<...Group...>

PLANTUML_OPTION_TYPES

pyfcstm.entry.plantuml.PLANTUML_OPTION_TYPES: Dict[str, type | str] = {'abstract_action_marker': <class 'str'>, 'collapse_empty_states': <class 'bool'>, 'collapsed_state_marker': <class 'str'>, 'detail_level': <class 'str'>, 'event_legend_position': <class 'str'>, 'event_name_format': 'tuple[str, ...]', 'event_visualization_mode': <class 'str'>, 'max_action_lines': <class 'int'>, 'max_depth': <class 'int'>, 'show_abstract_actions': <class 'bool'>, 'show_aspect_actions': <class 'bool'>, 'show_concrete_actions': <class 'bool'>, 'show_during_actions': <class 'bool'>, 'show_enter_actions': <class 'bool'>, 'show_events': <class 'bool'>, 'show_exit_actions': <class 'bool'>, 'show_lifecycle_actions': <class 'bool'>, 'show_pseudo_state_style': <class 'bool'>, 'show_transition_effects': <class 'bool'>, 'show_transition_guards': <class 'bool'>, 'show_variable_definitions': <class 'bool'>, 'state_name_format': 'tuple[str, ...]', 'transition_effect_mode': <class 'str'>, 'use_skinparam': <class 'bool'>, 'use_stereotypes': <class 'bool'>, 'variable_display_mode': <class 'str'>, 'variable_legend_position': <class 'str'>}

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s

(key, value) pairs

dict(iterable) -> new dictionary initialized as if via:

d = {} for k, v in iterable:

d[k] = v

dict(**kwargs) -> new dictionary initialized with the name=value pairs

in the keyword argument list. For example: dict(one=1, two=2)