defmodule OXC.Bundle.Entry do @moduledoc "Bundle entry configuration." defstruct name: nil, import: nil, source: nil @type t :: %__MODULE__{name: String.t() | nil, import: String.t(), source: iodata() | nil} def new(%__MODULE__{} = entry), do: entry def new(import) when is_binary(import), do: %__MODULE__{import: import} def new({name, import}) when is_binary(name) and is_binary(import), do: %__MODULE__{name: name, import: import} def new({name, import, source}), do: %__MODULE__{name: name, import: import, source: source} def new(%{import: import} = map) do %__MODULE__{ name: Map.get(map, :name), import: import, source: Map.get(map, :source) } end def to_native(%__MODULE__{} = entry) do %{name: entry.name, import: entry.import, source: entry.source} end end