defmodule Panty.String do @moduledoc """ String utilities """ @doc """ Return camel-case from a given string. ## Examples iex> String.camel_case("ha noi") "haNoi" iex> String.camel_case("Ha noi") "haNoi" iex> String.camel_case("ha-noi") "haNoi" """ @spec camel_case(String.t) :: String.t def camel_case(string) do string |> String.split(~r"[^a-zA-Z]", trim: true) |> Enum.with_index() |> Enum.map( fn {el, 0} -> String.downcase(el) {el, _idx} -> String.capitalize(el) end ) |> Enum.join("") end @doc """ Return kebab-case from a given string. ## Examples iex> String.keybab_case("ha noi") "ha-noi" iex> String.kebab_case("Panty Utilities") "panty-utilities" """ @spec kebab_case(String.t) :: String.t def kebab_case(string) do string |> String.split() |> Enum.join("-") |> String.downcase end end