ChangesetMerger v0.3.14 ChangesetMerger.Slug View Source

Link to this section 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

Link to this section Functions

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"}
Link to this function derive(changeset, from_field) View Source
Link to this function derive(changeset, from_field, to_field) View Source
Link to this function derive_if_missing(changeset) View Source

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"}
Link to this function derive_if_missing(changeset, from_field) View Source
Link to this function derive_if_missing(changeset, from_field, to_field) View Source

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"