Need help with recase?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

sobolevn
156 Stars 17 Forks MIT License 157 Commits 7 Opened issues

Description

:recycle: Convert strings to any case.

Services available

!
?

Need anything else?

Contributors list

# 1,842
mypy
phoenix...
python3
github-...
37 commits
# 749
GitHub
rust-la...
wechat-...
query-l...
9 commits
# 699,866
Elixir
elixir-...
2 commits
# 672,715
Elixir
elixir-...
2 commits
# 169,678
Elixir
Apache ...
Erlang
iot-fra...
1 commit
# 294,907
GraphQL
Elixir
elixir-...
absinth...
1 commit
# 440
JavaScr...
Shell
rich-te...
quill
1 commit
# 441,810
thresho...
sidekiq
Elixir
elixir-...
1 commit
# 371,552
Elixir
elixir-...
1 commit
# 2,957
query-l...
python-...
mvvm-fr...
wechat-...
1 commit
# 344,437
opendat...
wikiped...
Erlang
elixir-...
1 commit
# 23,381
Ruby
Elixir
elixir-...
webscra...
1 commit
# 164,355
HTML
Elixir
Shell
elixir-...
1 commit

Recase

Recase

Build Status Coverage Status Hex Version License

Recase
helps you to convert a string from any case to any case.

Why?

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.

Installation

def deps do
  [{:recase, "~> 0.5"}]
end

Usage

Pascal

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

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

Snake cases uses all lower case. Uses

_
as a separator.
Recase.to_snake("someValue") # => "some_value"
Recase.to_snake("Some Value") # => "some_value"

Kebab

Kebab cases uses all lower case. Uses

-
as a separator.
Recase.to_kebab("someValue") # => "some-value"
Recase.to_kebab("Some Value") # => "some-value"

Constant

Constant case uses all upper case. Uses

_
as a separator.
Recase.to_constant("SomeValue") # => "SOME_VALUE"
Recase.to_constant("some value") # => "SOME_VALUE"

Dot

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

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

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

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

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"

Enumerable

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"}

Changelog

Full changelog is available here.

License

MIT. See LICENSE.md for more details.

Thanks

Thanks to Gyan Lakhwani for the logo.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.