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 buffer operations.ex
Raw

lib/raxol/terminal/buffer/operations.ex

defmodule Raxol.Terminal.Buffer.Operations do
@moduledoc """
Compatibility adapter for consolidated buffer operations.
Forwards calls to Raxol.Terminal.ScreenBuffer.Operations.
"""
alias Raxol.Terminal.ScreenBuffer.Operations, as: ConsolidatedOps
@doc """
Writes a character at the specified position.
"""
def write_char(buffer, x, y, char, style \\ nil) do
ConsolidatedOps.write_char(buffer, x, y, char, style)
end
@doc """
Writes text starting at the specified position.
"""
def write_text(buffer, x, y, text, style \\ nil) do
ConsolidatedOps.write_text(buffer, x, y, text, style)
end
@doc """
Inserts a character at the cursor position.
"""
def insert_char(buffer, char, style \\ nil) do
ConsolidatedOps.insert_char(buffer, char, style)
end
@doc """
Deletes a character at the cursor position.
"""
def delete_char(buffer) do
ConsolidatedOps.delete_char(buffer)
end
@doc """
Clears a line.
"""
def clear_line(buffer, y) do
ConsolidatedOps.clear_line(buffer, y)
end
@doc """
Clears to end of line.
"""
def clear_to_end_of_line(buffer) do
ConsolidatedOps.clear_to_end_of_line(buffer)
end
@doc """
Clears to beginning of line.
"""
def clear_to_beginning_of_line(buffer) do
ConsolidatedOps.clear_to_beginning_of_line(buffer)
end
@doc """
Clears to end of screen.
"""
def clear_to_end_of_screen(buffer) do
ConsolidatedOps.clear_to_end_of_screen(buffer)
end
@doc """
Clears to beginning of screen.
"""
def clear_to_beginning_of_screen(buffer) do
ConsolidatedOps.clear_to_beginning_of_screen(buffer)
end
@doc """
Clears a rectangular region.
"""
def clear_region(buffer, x, y, width, height) do
ConsolidatedOps.clear_region(buffer, x, y, width, height)
end
@doc """
Inserts a blank line.
"""
def insert_line(buffer, y) do
ConsolidatedOps.insert_line(buffer, y)
end
@doc """
Deletes a line.
"""
def delete_line(buffer, y) do
ConsolidatedOps.delete_line(buffer, y)
end
@doc """
Fills a region with a character.
"""
def fill_region(buffer, x, y, width, height, char, style \\ nil) do
ConsolidatedOps.fill_region(buffer, x, y, width, height, char, style)
end
@doc """
Copies a region to another location.
"""
def copy_region(buffer, src_x, src_y, width, height, dest_x, dest_y) do
ConsolidatedOps.copy_region(
buffer,
src_x,
src_y,
width,
height,
dest_x,
dest_y
)
end
# Additional compatibility functions for specific test cases
@doc """
Inserts multiple lines (compatibility function).
"""
def insert_lines(buffer, y, count, _style \\ nil) when is_integer(count) do
Enum.reduce(1..count, buffer, fn _, acc ->
ConsolidatedOps.insert_line(acc, y)
end)
end
def insert_lines(buffer, lines, y, _top, _bottom) when is_list(lines) do
# For list of lines, insert each line
lines
|> Enum.with_index()
|> Enum.reduce(buffer, fn {line_content, index}, acc ->
line_y = y + index
ConsolidatedOps.write_text(acc, 0, line_y, line_content)
end)
end
@doc """
Deletes multiple lines (compatibility function).
"""
def delete_lines(buffer, y, count, _style \\ nil) when is_integer(count) do
Enum.reduce(1..count, buffer, fn _, acc ->
ConsolidatedOps.delete_line(acc, y)
end)
end
def delete_lines(buffer, lines, y, _top, _bottom) when is_integer(lines) do
Enum.reduce(1..lines, buffer, fn _, acc ->
ConsolidatedOps.delete_line(acc, y)
end)
end
end