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 = {key, value}) when is_binary(key) and is_binary(value) do
add(default_tokens(), token)
end
def add(key, value) when is_binary(key) and is_binary(value) do
add(default_tokens(), key, value)
end
def add(tokens, token) when is_list(tokens) and is_list(token) do
token ++ tokens
end
def add(tokens, {key, value}) when is_list(tokens) and is_binary(key) and is_binary(value) do
add(tokens, key, value)
end
def add(tokens, key, value) when is_list(tokens) and is_binary(key) and is_binary(value) do
[{key, value} | 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
config = Mix.Project.config()
case Keyword.fetch(config, :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()
|> add("{version}", config[:version])
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
end