JediHelpers (jedi_helpers v0.2.1)

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.

Extracts the path segment from a URI string.

Functions

atom_to_readable_string(atom)

@spec atom_to_readable_string(atom()) :: String.t()

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"

format_decimal(value)

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)
nil

Requirements

Requires the :decimal and :number libraries.

format_money(amount, currency, opts \\ [])

Formats a given amount into a currency string using Money.

Parameters

  • amount: A number representing the amount to format. Supported types:
    • Money struct (used directly)
    • Decimal (e.g., from Ecto fields)
    • integer (treated as the smallest unit, like cents)
    • float
    • string (parsed into a Money amount)
  • currency: A string or atom representing the ISO 4217 currency code (e.g., :php for Philippine Peso).
  • opts (optional): A keyword list of formatting options passed to Money.to_string/2.

Returns

  • A formatted currency string on success.
  • Raises a RuntimeError on formatting failure.
  • Raises an ArgumentError for unsupported amount types.
  • Returns nil if the amount is nil.

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.

format_name(arg1)

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"

format_name(user, style \\ :default)

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"

format_name_with_email(user)

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"

resource_type(resource)

@spec resource_type(struct()) :: String.t()

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).

uri_parse_path(uri)

@spec uri_parse_path(String.t()) :: String.t() | nil

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() or nil: The path component of the URI, or nil if absent.