lib/calex.ex
defmodule Calex do
@moduledoc """
Calex is a library for encoding and decoding [iCalendar (iCal)](https://datatracker.ietf.org/doc/html/rfc5545) data.
"""
@doc """
Decodes a string of iCal data.
"""
@spec decode!(data :: String.t()) :: Keyword.t() | no_return()
def decode!(data) when is_binary(data) do
Calex.Decoder.decode!(data)
end
def decode!(_) do
raise(ArgumentError, message: "argument must be string")
end
@doc """
Encodes iCal data into a string.
"""
@spec encode!(data :: Keyword.t()) :: String.t() | no_return()
def encode!(data) when is_list(data) do
Calex.Encoder.encode!(data)
end
def encode!(_) do
raise(ArgumentError, message: "argument must be keyword list")
end
end