Current section

Files

Jump to
panty lib string.ex
Raw

lib/string.ex

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