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
raxol_terminal lib raxol terminal output_buffer.ex
Raw

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