Arc.Naming (cratis_arc v0.1.0)

Copy Markdown View Source

Name conversions shared by routing, the wire format and proxy generation.

Elixir names are snake_case; the Arc wire format and the generated TypeScript use camelCase; conventional routes use lowercase kebab-case.

Summary

Functions

Converts a snake_case name or atom to camelCase.

Converts a PascalCase or camelCase name to kebab-case.

Splits a module into its namespace segments and its name.

Converts a snake_case function name to PascalCase, for query proxy class names.

Functions

camel(name)

@spec camel(atom() | String.t()) :: String.t()

Converts a snake_case name or atom to camelCase.

iex> Arc.Naming.camel(:first_name)
"firstName"

kebab(name)

@spec kebab(atom() | String.t()) :: String.t()

Converts a PascalCase or camelCase name to kebab-case.

iex> Arc.Naming.kebab("RegisterAuthor")
"register-author"

module_parts(module)

@spec module_parts(module()) :: {[String.t()], String.t()}

Splits a module into its namespace segments and its name.

iex> Arc.Naming.module_parts(MyApp.Authors.Registration.RegisterAuthor)
{["MyApp", "Authors", "Registration"], "RegisterAuthor"}

pascal(name)

@spec pascal(atom() | String.t()) :: String.t()

Converts a snake_case function name to PascalCase, for query proxy class names.

iex> Arc.Naming.pascal(:all_authors)
"AllAuthors"