Packages

Core functionalities for the StarkInfra and StarkBank Elixir SDKs

Current section

Files

Jump to
starkcore lib utils case.ex
Raw

lib/utils/case.ex

defmodule StarkCore.Utils.Case do
@moduledoc false
def camel_to_kebab(string) do
string
|> camel_to_snake()
|> String.replace("_", "-")
end
def camel_to_snake(string) do
string
|> String.graphemes()
|> camel_to_snake_graphemes()
|> strip_underscore()
|> Enum.join()
end
defp camel_to_snake_graphemes([letter | rest]) do
cond do
letter == letter |> String.upcase() ->
["_" | [String.downcase(letter) | camel_to_snake_graphemes(rest)]]
:error != Integer.parse(letter) ->
["_" | [letter | camel_to_snake_graphemes(rest)]]
true ->
[letter | camel_to_snake_graphemes(rest)]
end
end
defp camel_to_snake_graphemes([]) do
[]
end
defp strip_underscore([letter | rest]) when letter == "_" do
rest
end
defp strip_underscore(string) do
string
end
def snake_to_camel(string) do
string
|> String.graphemes()
|> snake_to_camel_graphemes()
|> Enum.join()
end
defp snake_to_camel_graphemes([letter | rest]) when letter == "_" do
snake_to_camel_graphemes([String.upcase(hd(rest)) | tl(rest)])
end
defp snake_to_camel_graphemes([letter | rest]) do
[letter | snake_to_camel_graphemes(rest)]
end
defp snake_to_camel_graphemes([]) do
[]
end
end