defmodule Plausible.Imported.ImportSources do @moduledoc """ Definitions of import sources. """ @sources [ Plausible.Imported.GoogleAnalytics4, Plausible.Imported.UniversalAnalytics, Plausible.Imported.NoopImporter, Plausible.Imported.CSVImporter ] @sources_map Map.new(@sources, &{&1.name(), &1}) @source_names Enum.map(@sources, & &1.name()) @spec names() :: [atom()] def names(), do: @source_names @spec by_name(atom()) :: module() def by_name(name) do Map.fetch!(@sources_map, name) end end