Raxol.Terminal.Escape.Parsers.CSIParser (Raxol v0.5.0)

View Source

Parser for Control Sequence Introducer (CSI) escape sequences.

Handles sequences in the format:

  • CSI P... I... F Where:
  • P: Parameters (numeric, separated by ;)
  • I: Intermediate bytes (optional)
  • F: Final byte (determines command)

Also handles DEC Private sequences (CSI ? P... F)

Summary

Functions

Parses a CSI sequence. Returns {:ok, command, remaining} or {:incomplete, remaining} or {:error, reason, remaining}

Parses a DEC Private CSI sequence.

Parses a standard CSI sequence.

Functions

parse(data)

@spec parse(String.t()) ::
  {:ok, term(), String.t()}
  | {:incomplete, String.t()}
  | {:error, atom(), String.t()}

Parses a CSI sequence. Returns {:ok, command, remaining} or {:incomplete, remaining} or {:error, reason, remaining}

parse_dec_private(params_str, final_byte, data)

@spec parse_dec_private(String.t(), String.t(), String.t()) ::
  {:ok, {:set_mode, :dec_private, integer(), boolean()}, String.t()}
  | {:error, atom(), String.t()}

Parses a DEC Private CSI sequence.

parse_standard_csi(data)

@spec parse_standard_csi(String.t()) ::
  {:ok, term(), String.t()}
  | {:incomplete, String.t()}
  | {:error, atom(), String.t()}

Parses a standard CSI sequence.