defmodule EverFaker.UUID do @moduledoc """ Functions for generating UUID's. """ @uuid_v4 4 @variant10 2 @doc """ Generate a random v4 UUID. ## Examples iex> EverFaker.UUID.v4() "d6d98b88-c866-4496-9bd4-de7ba48d0f52" iex> EverFaker.UUID.v4() "29fa7bf9-0728-4272-a7bc-5b7c964f332d" iex> EverFaker.UUID.v4() "c9edd02c-c9f3-41de-b9d9-22a146bf8550" iex> EverFaker.UUID.v4() "8a5f03ff-1875-4bf3-a3f4-aef1264e3bcc" """ @spec v4() :: String.t() def v4 do <> = EverFaker.random_bytes(16) <> |> uuid_to_string() end defp uuid_to_string(<>) do [ Base.encode16(<>, case: :lower), ?-, Base.encode16(<>, case: :lower), ?-, Base.encode16(<>, case: :lower), ?-, Base.encode16(<>, case: :lower), ?-, Base.encode16(<>, case: :lower) ] |> IO.iodata_to_binary() end end