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/output_buffer.ex
defmodule Raxol.Terminal.OutputBuffer do
@moduledoc """
Simple output buffer implementation for terminal output.
"""
@type t :: String.t()
@doc """
Writes a string to the output buffer.
"""
@spec write(t(), String.t()) :: t()
def write(buffer, string) do
buffer <> string
end
@doc """
Writes a string to the output buffer with a newline.
"""
@spec writeln(t(), String.t()) :: t()
def writeln(buffer, string) do
buffer <> string <> "\n"
end
@doc """
Flushes the output buffer.
"""
@spec flush(t()) :: {:ok, t()}
def flush(buffer) do
{:ok, buffer}
end
@doc """
Clears the output buffer.
"""
@spec clear(t()) :: t()
def clear(_buffer) do
""
end
@doc """
Gets the current output buffer content.
"""
@spec get_content(t()) :: String.t()
def get_content(buffer) do
buffer
end
@doc """
Sets the output buffer content.
"""
@spec set_content(t(), String.t()) :: t()
def set_content(_buffer, content) do
content
end
@doc """
Gets the output buffer size.
"""
@spec get_size(t()) :: non_neg_integer()
def get_size(buffer) do
String.length(buffer)
end
@doc """
Checks if the output buffer is empty.
"""
@spec empty?(t()) :: boolean()
def empty?(buffer) do
buffer == ""
end
@doc """
Sets the output buffer mode.
"""
@spec set_mode(t(), atom()) :: t()
def set_mode(buffer, _mode) do
buffer
end
@doc """
Gets the current output buffer mode.
"""
@spec get_mode(t()) :: atom()
def get_mode(_buffer) do
:normal
end
@doc """
Sets the output buffer encoding.
"""
@spec set_encoding(t(), String.t()) :: t()
def set_encoding(buffer, _encoding) do
buffer
end
@doc """
Gets the current output buffer encoding.
"""
@spec get_encoding(t()) :: String.t()
def get_encoding(_buffer) do
"utf-8"
end
end