class documentation

State superclass specialized for whitespace (blank lines & indents).

Use this class with StateMachineWS. The transitions 'blank' (for blank lines) and 'indent' (for indented text blocks) are added automatically, before any other transitions. The transition method blank() handles blank lines and indent() handles nested indented blocks. Indented blocks trigger a new state machine to be created by indent() and run. The class of the state machine to be created is in indent_sm, and the constructor keyword arguments are in the dictionary indent_sm_kwargs.

The methods known_indent() and firstknown_indent() are provided for indented blocks where the indent (all lines' and first line's only, respectively) is known to the transition method, along with the attributes known_indent_sm and known_indent_sm_kwargs. Neither transition method is triggered automatically.

Method __init__ Initialize a StateSM object; extends State.__init__().
Method add_initial_transitions Add whitespace-specific transitions before those defined in subclass.
Method blank Handle blank lines. Does nothing. Override in subclasses.
Method first_known_indent Handle an indented text block (first line's indent known).
Method indent Handle an indented text block. Extend or override in subclasses.
Method known_indent Handle a known-indent text block. Extend or override in subclasses.
Class Variable ws_initial_transitions Default initial whitespace transitions, added before those listed in State.initial_transitions. May be overridden in subclasses.
Class Variable ws_patterns Patterns for default whitespace transitions. May be overridden in subclasses.
Instance Variable indent_sm The StateMachine class handling indented text blocks.
Instance Variable indent_sm_kwargs Keyword arguments dictionary, passed to the indent_sm constructor.
Instance Variable known_indent_sm The StateMachine class handling known-indented text blocks.
Instance Variable known_indent_sm_kwargs Keyword arguments dictionary, passed to the known_indent_sm constructor.
Instance Variable patterns {Name: pattern} mapping, used by make_transition(). Each pattern may be a string or a compiled re pattern. Override in subclasses.

Inherited from State:

Method add_transition Add a transition to the start of the transition list.
Method add_transitions Add a list of transitions to the start of the transition list.
Method bof Handle beginning-of-file. Return unchanged context, empty result.
Method eof Handle end-of-file. Return empty result.
Method make_transition Make & return a transition tuple based on name.
Method make_transitions Return a list of transition names and a transition mapping.
Method no_match Called when there is no match from StateMachine.check_line().
Method nop A "do nothing" transition method.
Method remove_transition Remove a transition by name.
Method runtime_init Initialize this State before running the state machine; called from self.state_machine.run().
Method unlink Remove circular references to objects no longer required.
Class Variable initial_transitions A list of transitions to initialize when a State is instantiated. Each entry is either a transition name string, or a (transition name, next state name) pair. See make_transitions(). Override in subclasses.
Instance Variable debug Debugging mode on/off.
Instance Variable nested_sm The StateMachine class for handling nested processing.
Instance Variable nested_sm_kwargs Keyword arguments dictionary, passed to the nested_sm constructor.
Instance Variable state_machine A reference to the controlling StateMachine object.
Instance Variable transition_order A list of transition names in search order.
Instance Variable transitions A mapping of transition names to 3-tuples containing (compiled_pattern, transition_method, next_state_name). Initialized as an instance attribute dynamically (instead of as a class attribute) because it may make forward references to patterns and methods in this or other classes.
def __init__(self, state_machine, debug=False): (source)

Initialize a StateSM object; extends State.__init__().

Check for indent state machine attributes, set defaults if not set.

def add_initial_transitions(self): (source)

Add whitespace-specific transitions before those defined in subclass.

Extends State.add_initial_transitions().

def blank(self, match, context, next_state): (source)

Handle blank lines. Does nothing. Override in subclasses.

def first_known_indent(self, match, context, next_state): (source)

Handle an indented text block (first line's indent known).

Extend or override in subclasses.

Recursively run the registered state machine for known-indent indented blocks (self.known_indent_sm). The indent is the length of the match, match.end().

def indent(self, match, context, next_state): (source)

Handle an indented text block. Extend or override in subclasses.

Recursively run the registered state machine for indented blocks (self.indent_sm).

def known_indent(self, match, context, next_state): (source)

Handle a known-indent text block. Extend or override in subclasses.

Recursively run the registered state machine for known-indent indented blocks (self.known_indent_sm). The indent is the length of the match, match.end().

ws_initial_transitions: tuple[str, ...] = (source)

Default initial whitespace transitions, added before those listed in State.initial_transitions. May be overridden in subclasses.

ws_patterns = (source)

Patterns for default whitespace transitions. May be overridden in subclasses.

indent_sm = (source)

The StateMachine class handling indented text blocks.

If left as None, indent_sm defaults to the value of State.nested_sm. Override it in subclasses to avoid the default.

indent_sm_kwargs = (source)

Keyword arguments dictionary, passed to the indent_sm constructor.

If left as None, indent_sm_kwargs defaults to the value of State.nested_sm_kwargs. Override it in subclasses to avoid the default.

known_indent_sm = (source)

The StateMachine class handling known-indented text blocks.

If left as None, known_indent_sm defaults to the value of indent_sm. Override it in subclasses to avoid the default.

known_indent_sm_kwargs = (source)

Keyword arguments dictionary, passed to the known_indent_sm constructor.

If left as None, known_indent_sm_kwargs defaults to the value of indent_sm_kwargs. Override it in subclasses to avoid the default.

patterns: dict = (source)

{Name: pattern} mapping, used by make_transition(). Each pattern may be a string or a compiled re pattern. Override in subclasses.