ChangesetMerger v0.3.8 ChangesetMerger.Slug

Summary

Functions

Derive the slug from an existing field. If the source field is not set, then do not do anything

Derive the slug from an existing field. If the source field is not set, then do not do anything

Return a string in form of a slug for a given string

Functions

derive(changeset)

Derive the slug from an existing field. If the source field is not set, then do not do anything.

Examples

iex> ChangesetMerger.create(%{"name" => "Granny Smith"}, %{name: :string})
...> |> ChangesetMerger.Slug.derive(:name)
...> |> Map.get(:changes)
%{name: "Granny Smith", slug: "granny-smith"}

iex> ChangesetMerger.create(%{"apples" => "Granny Smith"}, %{apples: :string})
...> |> ChangesetMerger.Slug.derive(:apples)
...> |> Map.get(:changes)
%{apples: "Granny Smith", slug: "granny-smith"}

iex> ChangesetMerger.create(%{}, %{apples: :string})
...> |> ChangesetMerger.Slug.derive(:apples, :apples_slug)
...> |> Map.get(:changes)
%{}

iex> ChangesetMerger.create(%{"apples" => "Granny Smith"}, %{apples: :string})
...> |> ChangesetMerger.Slug.derive(:apples, :apples_slug)
...> |> Map.get(:changes)
%{apples: "Granny Smith", apples_slug: "granny-smith"}

iex> ChangesetMerger.create(%{"apples" => "Granny Smith", "apples_slug" => "gsmith"}, %{apples: :string, apples_slug: :string})
...> |> ChangesetMerger.Slug.derive(:apples, :apples_slug)
...> |> Map.get(:changes)
%{apples: "Granny Smith", apples_slug: "granny-smith"}
derive(changeset, from_field)
derive(changeset, from_field, to_field)
derive_if_missing(changeset)

Derive the slug from an existing field. If the source field is not set, then do not do anything.

Derive a field from another field based on the provided function. only if the target field IS NOT set. If the source field is not set, then do not do anything.

Examples

iex> ChangesetMerger.create(%{"name" => "Granny Smith"}, %{name: :string})
...> |> ChangesetMerger.Slug.derive_if_missing(:name)
...> |> Map.get(:changes)
%{name: "Granny Smith", slug: "granny-smith"}

iex> ChangesetMerger.create(%{"apples" => "Granny Smith"}, %{apples: :string})
...> |> ChangesetMerger.Slug.derive_if_missing(:apples)
...> |> Map.get(:changes)
%{apples: "Granny Smith", slug: "granny-smith"}

iex> ChangesetMerger.create(%{}, %{apples: :string})
...> |> ChangesetMerger.Slug.derive_if_missing(:apples, :apples_slug)
...> |> Map.get(:changes)
%{}

iex> ChangesetMerger.create(%{"apples" => "Granny Smith"}, %{apples: :string})
...> |> ChangesetMerger.Slug.derive_if_missing(:apples, :apples_slug)
...> |> Map.get(:changes)
%{apples: "Granny Smith", apples_slug: "granny-smith"}

iex> ChangesetMerger.create(%{"apples" => "Granny Smith", "apples_slug" => "gsmith"}, %{apples: :string, apples_slug: :string})
...> |> ChangesetMerger.Slug.derive_if_missing(:apples, :apples_slug)
...> |> Map.get(:changes)
%{apples: "Granny Smith", apples_slug: "gsmith"}
derive_if_missing(changeset, from_field)
derive_if_missing(changeset, from_field, to_field)
generate(text)

Return a string in form of a slug for a given string.

Examples

iex> ChangesetMerger.Slug.generate(" Hi # there ")
"hi-there"

iex> ChangesetMerger.Slug.generate("Über den Wölkchen draußen im Tore")
"ueber-den-woelkchen-draussen-im-tore"

iex> ChangesetMerger.Slug.generate("_Trimming_and___Removing_inside___")
"trimming-and-removing-inside"