Packages

Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.

Current section

Files

Jump to
raxol lib raxol terminal parser state_manager_behaviour.ex
Raw

lib/raxol/terminal/parser/state_manager_behaviour.ex

defmodule Raxol.Terminal.Parser.StateManagerBehaviour do
@moduledoc """
Behaviour for terminal parser state management.
"""
alias Raxol.Terminal.Emulator.Struct, as: EmulatorStruct
alias Raxol.Terminal.Parser.ParserState, as: State
@type t :: term()
@callback new() :: State.t()
@callback get_state(EmulatorStruct.t()) :: State.t()
@callback update_state(EmulatorStruct.t(), State.t()) :: EmulatorStruct.t()
@callback get_state_name(EmulatorStruct.t()) :: atom()
@callback set_state_name(EmulatorStruct.t(), atom()) :: EmulatorStruct.t()
@callback reset_to_ground(EmulatorStruct.t()) :: EmulatorStruct.t()
@callback in_ground_state?(EmulatorStruct.t()) :: boolean()
@callback in_escape_state?(EmulatorStruct.t()) :: boolean()
@callback in_control_sequence_state?(EmulatorStruct.t()) :: boolean()
@callback get_mode_manager(t()) :: map()
@callback update_mode_manager(t(), map()) :: t()
@callback get_charset_state(t()) :: map()
@callback update_charset_state(t(), map()) :: t()
@callback get_state_stack(t()) :: list()
@callback update_state_stack(t(), list()) :: t()
@callback get_scroll_region(t()) :: map()
@callback update_scroll_region(t(), map()) :: t()
@callback get_last_col_exceeded(t()) :: boolean()
@callback update_last_col_exceeded(t(), boolean()) :: t()
@callback reset_to_initial_state(t()) :: t()
end