defmodule GitHub.License do @moduledoc """ Provides struct and types for a License """ use GitHub.Encoder @type simple :: %__MODULE__{ __info__: map, html_url: String.t() | nil, key: String.t(), name: String.t(), node_id: String.t(), spdx_id: String.t() | nil, url: String.t() | nil } @type t :: %__MODULE__{ __info__: map, body: String.t(), conditions: [String.t()], description: String.t(), featured: boolean, html_url: String.t(), implementation: String.t(), key: String.t(), limitations: [String.t()], name: String.t(), node_id: String.t(), permissions: [String.t()], spdx_id: String.t() | nil, url: String.t() | nil } defstruct [ :__info__, :body, :conditions, :description, :featured, :html_url, :implementation, :key, :limitations, :name, :node_id, :permissions, :spdx_id, :url ] @doc false @spec __fields__(atom) :: keyword def __fields__(type \\ :t) def __fields__(:simple) do [ html_url: {:string, :uri}, key: {:string, :generic}, name: {:string, :generic}, node_id: {:string, :generic}, spdx_id: {:union, [{:string, :generic}, :null]}, url: {:union, [{:string, :uri}, :null]} ] end def __fields__(:t) do [ body: {:string, :generic}, conditions: [string: :generic], description: {:string, :generic}, featured: :boolean, html_url: {:string, :uri}, implementation: {:string, :generic}, key: {:string, :generic}, limitations: [string: :generic], name: {:string, :generic}, node_id: {:string, :generic}, permissions: [string: :generic], spdx_id: {:union, [{:string, :generic}, :null]}, url: {:union, [{:string, :uri}, :null]} ] end end