chessh/lib/chessh/utils.ex
2023-01-13 12:21:04 -07:00

39 lines
916 B
Elixir

defmodule Chessh.Utils do
@ascii_chars Application.compile_env!(:chessh, :ascii_chars_json_file)
|> File.read!()
|> Jason.decode!()
@clear_codes [
IO.ANSI.clear(),
IO.ANSI.home()
]
def ascii_chars(), do: @ascii_chars
def clear_codes(), do: @clear_codes
def center_rect({rect_width, rect_height}, {parent_width, parent_height}) do
{
div(parent_height - rect_height, 2),
div(parent_width - rect_width, 2)
}
end
def pid_to_str(pid) do
pid
|> :erlang.pid_to_list()
|> List.delete_at(0)
|> List.delete_at(-1)
|> to_string()
end
def text_dim(text) do
split = String.split(text, "\n")
{Enum.reduce(split, 0, fn x, acc -> max(acc, String.length(x)) end), length(split)}
end
def wrap_around(index, delta, length) do
calc = index + delta
if(calc < 0, do: length, else: 0) + rem(calc, length)
end
end