JediHelpers
Copy MarkdownA collection of general-purpose helpers for Elixir projects, designed to make your codebase cleaner and more reusable. Includes utilities for working with changesets and common functional patterns.
Features
- Changeset string trimming and blank-to-
nilnormalization. - Validation that at least one of several changeset fields is present.
- Select-option generation with field or function selectors.
- Date parsing, number and money formatting, and common display helpers.
Usage
Each public function includes a use case and its resulting value in the API documentation. A few common Phoenix examples are shown below.
Normalize form input
types = %{name: :string, email: :string}
changeset =
{%{}, types}
|> Ecto.Changeset.cast(%{"name" => " Leia ", "email" => " "}, [:name, :email])
|> JediHelpers.ChangesetHelpers.normalize_strings([:name, :email])
changeset.changes
# => %{email: nil, name: "Leia"}Build select options
users = [%{id: 1, name: "Leia"}, %{id: 2, name: "Luke"}]
JediHelpers.FormHelpers.options_for(users, :name)
# => [{"Leia", 1}, {"Luke", 2}]Parse imported dates
JediHelpers.DateUtils.to_date("2024-1-9")
# => ~D[2024-01-09]
JediHelpers.DateUtils.to_date("invalid")
# => nilFormat values for display
JediHelpers.format_decimal("1234.5")
# => "1,234.50"
JediHelpers.format_money("1234.56", :php)
# => "₱1,234.56"
JediHelpers.number_to_words(42)
# => "forty-two"Installation
Add :jedi_helpers to your list of dependencies in mix.exs:
def deps do
[
{:jedi_helpers, "~> 0.3.1"}
]
endGenerate the complete API documentation locally with:
mix docs
Published documentation is available on HexDocs.