Packages
Terminal emulation and driver infrastructure for Raxol. ANSI parsing, screen buffers, command processing, cursor management, input handling, session management, and termbox2 NIF integration.
Current section
Files
Jump to
Current section
Files
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