Current section

Files

Jump to
elixir_structure_manager lib utils token_helper.ex
Raw

lib/utils/token_helper.ex

defmodule ElixirStructureManager.Utils.TokenHelper do
alias ElixirStructureManager.Utils.StringContent
@moduledoc false
def add(token) when is_tuple(token) do
add(default_tokens(), token)
end
def add(key, value) when is_binary(key) and is_binary(value) do
StringContent.format_name(value)
|> to_token_list(key)
|> add(default_tokens())
end
def add(tokens, token) when is_list(token) and is_list(tokens) do
token ++ tokens
end
def add(tokens, token) when is_tuple(token) and is_list(tokens) do
[token | tokens]
end
def add(tokens, key, value) when is_binary(key) and is_binary(value) and is_list(tokens) do
StringContent.format_name(value)
|> to_token_list(key)
|> add(tokens)
end
def add_boolean(tokens, key, value) when is_binary(key) do
add(tokens, {key, to_string(value || false)})
end
def default_tokens() do
case Mix.Project.config() |> Keyword.fetch(:app) do
:error ->
Mix.shell().error("It is not an elixir project")
raise "It is not an elixir project"
{:ok, app_name} ->
to_string(app_name)
|> StringContent.format_name()
|> to_token_list()
end
end
def initial_tokens(app_name) do
app_name
|> StringContent.format_name()
|> to_token_list()
end
defp to_token_list({:ok, app_snake_name, app_camel_name}) do
[{"{app}", app_camel_name}, {"{app_snake}", app_snake_name}]
end
defp to_token_list({:ok, app_snake_name, app_camel_name}, key) do
[{"{#{key}_snake}", app_snake_name}, {"{#{key}}", app_camel_name}]
end
end