Packages
umya_spreadsheet_ex
0.7.0
Elixir NIF wrapper for the umya-spreadsheet Rust library, providing Excel (.xlsx) file manipulation capabilities.
Current section
Files
Jump to
Current section
Files
lib/umya_spreadsheet/error_handling.ex
defmodule UmyaSpreadsheet.ErrorHandling do
@moduledoc """
Helper functions for standardizing error handling across the UmyaSpreadsheet library.
"""
@doc """
Unwraps nested error tuples to ensure a standardized error format.
This helps with fixing the nested error tuples like {:error, {:error, reason}} to {:error, reason}
"""
def unwrap_error({:error, {:error, reason}}), do: {:error, reason}
def unwrap_error({:error, reason}), do: {:error, reason}
def unwrap_error(other), do: other
@doc """
Standardizes success return values, ensuring they follow the {:ok, value} pattern.
"""
def standardize_ok_result({:ok, :ok}), do: :ok
def standardize_ok_result({:ok, value}), do: {:ok, value}
def standardize_ok_result(:ok), do: :ok
def standardize_ok_result(value) when not is_tuple(value), do: {:ok, value}
def standardize_ok_result(other), do: other
@doc """
Standardizes result format for NIF functions that might return mixed formats.
This is the main function to use for most function return value processing.
"""
def standardize_result({:error, {:not_found, _}}), do: {:error, :not_found}
def standardize_result({:error, _} = error), do: unwrap_error(error)
def standardize_result({:ok, _} = success), do: standardize_ok_result(success)
def standardize_result(:ok), do: :ok
# Handle empty tuple from Rust NIF functions
def standardize_result({}), do: :ok
def standardize_result(value), do: {:ok, value}
end