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/text_formatting.ex
defmodule Raxol.Terminal.Buffer.TextFormatting do
@moduledoc """
Manages terminal text formatting operations.
"""
alias Raxol.Terminal.Buffer.Cell
@doc """
Applies bold formatting to a cell.
"""
def apply_bold(%Cell{} = cell) do
update_attributes(cell, :bold, true)
end
@doc """
Applies italic formatting to a cell.
"""
def apply_italic(%Cell{} = cell) do
update_attributes(cell, :italic, true)
end
@doc """
Applies underline formatting to a cell.
"""
def apply_underline(%Cell{} = cell) do
update_attributes(cell, :underline, true)
end
@doc """
Applies blink formatting to a cell.
"""
def apply_blink(%Cell{} = cell) do
update_attributes(cell, :blink, true)
end
@doc """
Applies reverse video formatting to a cell.
"""
def apply_reverse(%Cell{} = cell) do
update_attributes(cell, :reverse, true)
end
@doc """
Applies invisible formatting to a cell.
"""
def apply_invisible(%Cell{} = cell) do
update_attributes(cell, :invisible, true)
end
@doc """
Removes bold formatting from a cell.
"""
def remove_bold(%Cell{} = cell) do
update_attributes(cell, :bold, false)
end
@doc """
Removes italic formatting from a cell.
"""
def remove_italic(%Cell{} = cell) do
update_attributes(cell, :italic, false)
end
@doc """
Removes underline formatting from a cell.
"""
def remove_underline(%Cell{} = cell) do
update_attributes(cell, :underline, false)
end
@doc """
Removes blink formatting from a cell.
"""
def remove_blink(%Cell{} = cell) do
update_attributes(cell, :blink, false)
end
@doc """
Removes reverse video formatting from a cell.
"""
def remove_reverse(%Cell{} = cell) do
update_attributes(cell, :reverse, false)
end
@doc """
Removes invisible formatting from a cell.
"""
def remove_invisible(%Cell{} = cell) do
update_attributes(cell, :invisible, false)
end
@doc """
Checks if a cell has bold formatting.
"""
def bold?(%Cell{} = cell) do
get_attribute(cell, :bold)
end
@doc """
Checks if a cell has italic formatting.
"""
def italic?(%Cell{} = cell) do
get_attribute(cell, :italic)
end
@doc """
Checks if a cell has underline formatting.
"""
def underline?(%Cell{} = cell) do
get_attribute(cell, :underline)
end
@doc """
Checks if a cell has blink formatting.
"""
def blink?(%Cell{} = cell) do
get_attribute(cell, :blink)
end
@doc """
Checks if a cell has reverse video formatting.
"""
def reverse?(%Cell{} = cell) do
get_attribute(cell, :reverse)
end
@doc """
Checks if a cell has invisible formatting.
"""
def invisible?(%Cell{} = cell) do
get_attribute(cell, :invisible)
end
@doc """
Resets all formatting attributes on a cell.
"""
def reset_formatting(%Cell{} = cell) do
%{cell | attributes: %{}}
end
defp update_attributes(%Cell{} = cell, key, value) do
attributes = Map.put(cell.attributes, key, value)
%{cell | attributes: attributes}
end
defp get_attribute(%Cell{} = cell, key) do
Map.get(cell.attributes, key, false)
end
def new, do: %{}
end