defmodule ExTTRPGDev.RuleSystems.Abilities.Spec do alias ExTTRPGDev.RuleSystems.Abilities.Spec @moduledoc """ A spec is the base definition of an ability, defining its name, abbreviation, and description. Additionally this module provides helper methods for individual specs and lists of specs. """ defstruct [:name, :abbreviation, :description] @doc """ Retunes the names of the given specs ## Examples iex> ExTTRPGDev.RuleSystems.Abilities.Spec.get_names(list_of_specs) ["names", "of", "specs] """ def get_names([%Spec{} | _tail] = specs) do Enum.reduce(specs, [], fn spec, acc -> [spec.name | acc] end) end end