JediHelpers (jedi_helpers v0.2.6)
Documentation for JediHelpers.
Summary
Functions
Converts an atom into a human-readable string by title-casing its segments.
Formats a decimal or numeric input by
Formats a given amount into a currency string using Money.
Formats a user's full name as "First Last".
Formats a user's name as "Last, First" if :last_first style is passed.
Formats a user's full name with email as "First Last - email@example.com".
Returns the underscored (snake_case) name of a struct's module as a string.
Trims the :description field of the given resource to a maximum length.
Extracts the path segment from a URI string.
Functions
Converts an atom into a human-readable string by title-casing its segments.
Useful for displaying labels or headings derived from atoms.
Examples
iex> JediHelpers.atom_to_readable_string(:user_profile)
"User Profile"
iex> JediHelpers.atom_to_readable_string(:admin)
"Admin"
Formats a decimal or numeric input by:
- Converting it to a
Decimal - Rounding to 2 decimal places
- Converting to a string
- Adding thousands separators (e.g.,
"1,234.56")
Returns nil if the input is nil.
Examples
iex> format_decimal(1234567.891)
"1,234,567.89"
iex> format_decimal("1000.1")
"1,000.10"
iex> format_decimal(nil)
nilRequirements
Requires the :decimal and :number libraries.
Formats a given amount into a currency string using Money.
Parameters
amount: A number representing the amount to format. Supported types:currency: A string or atom representing the ISO 4217 currency code (e.g.,:phpfor Philippine Peso).opts(optional): A keyword list of formatting options passed toMoney.to_string/2.
Returns
- A formatted currency string on success.
- Raises a
RuntimeErroron formatting failure. - Raises an
ArgumentErrorfor unsupported amount types. - Returns
nilif theamountisnil.
Examples
iex> format_money(1000, :php)
"₱1,000.00"
iex> format_money(nil, :php)
nil
iex> format_money(Decimal.new("1234.56"), :usd)
"$1,234.56"
iex> format_money(1234.56, :php, symbol: false)
"1,234.56 PHP"Formatting Options
The opts are forwarded to Money.to_string/2.
Refer to the ex_money Money.to_string/2 documentation for the full list of supported options.
Formats a user's full name as "First Last".
Returns nil if the input is nil.
Examples
iex> format_name(%{first_name: "Luke", last_name: "Skywalker"})
"Luke Skywalker"
Formats a user's name as "Last, First" if :last_first style is passed.
Examples
iex> format_name(%{first_name: "Luke", last_name: "Skywalker"}, :last_first)
"Skywalker, Luke"
Formats a user's full name with email as "First Last - email@example.com".
Examples
iex> format_name_with_email(%{first_name: "Leia", last_name: "Organa", email: "leia@alderaan.com"})
"Leia Organa - leia@alderaan.com"
Returns the underscored (snake_case) name of a struct's module as a string.
Useful for generating type identifiers from structs, especially in APIs or dynamic logic.
Example
iex> resource_type(%JediHelpers.BlogPost{})
"blog_post"Parameters:
resource(struct): Any Elixir struct.
Returns:
String.t(): The snake_case name of the struct's module (last segment only).
Trims the :description field of the given resource to a maximum length.
Parameters
- resource: A map that must contain a non-nil, binary
:descriptionkey. - max_length: The maximum length of the trimmed description (default is 50).
Examples
iex> trim_description(%{description: "This is a very long description that needs trimming"}, 10)
"This is a "
iex> trim_description(%{description: "Short"}, 10)
"Short"Raises
Raises ArgumentError if the resource does not contain a non-nil, binary :description field.
Extracts the path segment from a URI string.
Useful for isolating the path portion of a full URL (e.g. /users/123).
Example
iex> uri_parse_path("https://example.com/users/123?ref=home")
"/users/123"Parameters:
uri(String.t()): A URI string.
Returns:
String.t()ornil: The path component of the URI, ornilif absent.