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/screen_buffer/formatting.ex
defmodule Raxol.Terminal.ScreenBuffer.Formatting do
@moduledoc false
def init do
%{
current_style: %{
foreground: :default,
background: :default,
attributes: MapSet.new()
}
}
end
def get_style(state) do
state.current_style
end
def update_style(state, style) do
%{state | current_style: Map.merge(state.current_style, style)}
end
def set_attribute(state, attribute) do
attributes = MapSet.put(state.current_style.attributes, attribute)
update_style(state, %{attributes: attributes})
end
def reset_attribute(state, attribute) do
attributes = MapSet.delete(state.current_style.attributes, attribute)
update_style(state, %{attributes: attributes})
end
def set_foreground(state, color) do
update_style(state, %{foreground: color})
end
def set_background(state, color) do
update_style(state, %{background: color})
end
def reset_all(_state) do
init()
end
def get_foreground(state) do
state.current_style.foreground
end
def get_background(state) do
state.current_style.background
end
def attribute_set?(state, attribute) do
MapSet.member?(state.current_style.attributes, attribute)
end
def get_set_attributes(state) do
state.current_style.attributes
end
end