Raxol.Terminal.Escape.Parsers.BaseParser (Raxol v2.0.1)

View Source

Base parser utilities for escape sequence parsers.

Provides common functionality for logging and handling unknown sequences.

Summary

Functions

Extracts the final byte from a CSI sequence.

Checks if a character is a valid CSI final character.

Checks if a character is a valid CSI intermediate character.

is_final?(char) deprecated
is_parameter?(char) deprecated

Logs an unknown escape sequence for debugging purposes.

Checks if a character is a valid CSI parameter character.

Parses a numeric parameter from a string.

Splits parameters by semicolon and parses them as integers.

Functions

extract_final_byte(input)

@spec extract_final_byte(String.t()) :: {String.t(), String.t()} | nil

Extracts the final byte from a CSI sequence.

The final byte determines the command type in CSI sequences.

Parameters

  • input: The input string

Returns

{final_byte, params_string} or nil if no final byte found

final?(char)

@spec final?(integer()) :: boolean()

Checks if a character is a valid CSI final character.

Final characters are in the range 0x40-0x7E (@ through ~)

Parameters

  • char: Character code to check

Returns

Boolean indicating if it's a final character

intermediate?(char)

@spec intermediate?(integer()) :: boolean()

Checks if a character is a valid CSI intermediate character.

Intermediate characters are in the range 0x20-0x2F (space through /)

Parameters

  • char: Character code to check

Returns

Boolean indicating if it's an intermediate character

is_final?(char)

This function is deprecated. Use final?/1 instead.

is_intermediate?(char)

This function is deprecated. Use intermediate?/1 instead.

is_parameter?(char)

This function is deprecated. Use parameter?/1 instead.

log_unknown_sequence(prefix, sequence)

@spec log_unknown_sequence(String.t(), String.t()) :: :ok

Logs an unknown escape sequence for debugging purposes.

Parameters

  • prefix: The escape sequence prefix (e.g., "ESC", "CSI")
  • sequence: The unknown sequence

Returns

:ok

parameter?(char)

@spec parameter?(integer()) :: boolean()

Checks if a character is a valid CSI parameter character.

Parameter characters are in the range 0x30-0x3F (0 through ?)

Parameters

  • char: Character code to check

Returns

Boolean indicating if it's a parameter character

parse_int(str)

@spec parse_int(String.t()) :: integer() | nil

Parses a numeric parameter from a string.

Parameters

  • str: String containing the number

Returns

The parsed integer or nil if parsing fails

parse_params(params)

@spec parse_params(String.t()) :: [integer()]

Splits parameters by semicolon and parses them as integers.

Parameters

  • params: String containing semicolon-separated parameters

Returns

List of parsed integers (nils are filtered out)