Packages

Elixlsx is a writer for the MS Excel OpenXML format (`.xlsx`).

Current section

Files

Jump to
elixlsr lib elixlsx compiler border_db.ex
Raw

lib/elixlsx/compiler/border_db.ex

defmodule Elixlsx.Compiler.BorderStyleDB do
alias __MODULE__
alias Elixlsx.Style.BorderStyle
alias Elixlsx.Compiler.DBUtil
defstruct borders: %{}, element_count: 0
@type t :: %BorderStyleDB{
borders: %{BorderStyle.t() => pos_integer},
element_count: non_neg_integer
}
def register_border(borderstyledb, border) do
case Map.fetch(borderstyledb.borders, border) do
:error ->
%BorderStyleDB{
borders: Map.put(borderstyledb.borders, border, borderstyledb.element_count + 1),
element_count: borderstyledb.element_count + 1
}
{:ok, _} ->
borderstyledb
end
end
def get_id(borderstyledb, border) do
case Map.fetch(borderstyledb.borders, border) do
:error ->
raise %ArgumentError{
message: "Invalid key provided for BorderStyleDB.get_id: " <> inspect(border)
}
{:ok, id} ->
id
end
end
def id_sorted_borders(db), do: DBUtil.id_sorted_values(db.borders)
end