39 lines
916 B
Elixir
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
|