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/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