noahsettersten's picture
perf: Combine `map` & `join` into `map_join`
91b179b
raw
history blame
621 Bytes
defmodule MedicalTranscription.Utilities do
@moduledoc """
Contains general utility functions that are not specific to a domain or context in the system.
"""
@doc "Takes an enumerable of atoms and tallies a count for how often each appears."
def tally(enumerable) do
Enum.reduce(enumerable, %{}, fn item, acc ->
if Map.has_key?(acc, item) do
Map.put(acc, item, acc[item] + 1)
else
Map.put(acc, item, 1)
end
end)
end
def tally_to_string(tallied_enumerable) do
tallied_enumerable
|> Enum.map_join(", ", fn {key, value} -> "#{key} (#{value})" end)
end
end