Recase
helps you to convert a string from any case to any case.
One can ask: "Why should I use recase
when I can use built-in Macro
module?". But, you have to keep in mind that Macro
's functions are not suitable for general case usage:
Do not use it as a general mechanism for underscoring or camelizing strings as it does not support Unicode or characters that are not valid in Elixir identifiers.
def deps do
[{:recase, "~> 0.5"}]
end
Pascal (or Upper) case uses mixed case with lower and upper cased characters. Separates words from each other with the upper case letters. Starts with upper case letter.
Recase.to_pascal("some-value") # => "SomeValue"
Recase.to_pascal("Some value") # => "SomeValue"
Camel case uses mixed case with lower and upper cased characters. Separates words from each other with the upper cased letters. Starts with lower case letter.
Recase.to_camel("some-value") # => "someValue"
Recase.to_camel("Some Value") # => "someValue"
Snake cases uses all lower case. Uses _
as a separator.
Recase.to_snake("someValue") # => "some_value"
Recase.to_snake("Some Value") # => "some_value"
Kebab cases uses all lower case. Uses -
as a separator.
Recase.to_kebab("someValue") # => "some-value"
Recase.to_kebab("Some Value") # => "some-value"
Constant case uses all upper case. Uses _
as a separator.
Recase.to_constant("SomeValue") # => "SOME_VALUE"
Recase.to_constant("some value") # => "SOME_VALUE"
Dot case uses all lower case similar to snake case. Uses .
as a separator.
Recase.to_dot("SomeValue") # => "some.value"
Recase.to_dot("some value") # => "some.value"
Path case preserves case, you can also provide a separator as the second argument.
Recase.to_path("SomeValue") # => "Some/Value"
Recase.to_path("some value", "\\") # => "some\\value"
Sentence case uses the same rules as regular sentence. First letter is uppercase all others letters are lowercase separated by spaces.
Recase.to_sentence("SomeValue") # => "Some value"
Recase.to_sentence("some value") # => "Some value"
Title case applies a "Title Style" to all words in a sentence.
Recase.to_title("some-value") # => "Some Value"
Recase.to_title("some value") # => "Some Value"
Header case uses the same case as PascalCase, while using -
as a separator.
Recase.to_header("SomeValue") # => "Some-Value"
Recase.to_header("some value") # => "Some-Value"
You can convert all keys in an enumerable with:
Recase.Enumerable.convert_keys(
%{"yourKey" => "value"},
&Recase.to_snake/1
) # => %{"your_key" => "value"}
Recase.Enumerable.convert_keys(
%{"your_key" => "value"},
&Recase.to_camel/1
) # => %{"yourKey" => "value"}
Recase.Enumerable.atomize_keys(
%{"yourKey" => "value"},
&Recase.to_snake/1
) # => %{your_key: "value"}
Recase.Enumerable.atomize_keys(
%{"your_key" => "value"},
&Recase.to_camel/1
) # => %{yourKey: "value"}
Full changelog is available here.
MIT. See LICENSE.md for more details.
Thanks to Gyan Lakhwani for the logo.