Registry and lookup functions for content types.
Maps directory names and type names to content type modules. By default, five built-in types are registered: article, note, project, talk, and page.
Custom types can be added via application config:
config :sayfa, :content_types, [MyApp.ContentTypes.Recipe | Sayfa.ContentType.default_types()]Examples
iex> Sayfa.ContentType.find_by_name(:article)
Sayfa.ContentTypes.Article
iex> Sayfa.ContentType.find_by_directory("articles")
Sayfa.ContentTypes.Article
iex> Sayfa.ContentType.find_by_directory("unknown")
nil
Summary
Functions
Returns all registered content type modules.
Returns the list of built-in content type modules.
Finds a content type module by its directory name.
Finds a content type module by its atom name.
Functions
@spec all() :: [module()]
Returns all registered content type modules.
Reads from application config, falling back to default_types/0.
Examples
iex> types = Sayfa.ContentType.all()
iex> is_list(types)
true
@spec default_types() :: [module()]
Returns the list of built-in content type modules.
Examples
iex> length(Sayfa.ContentType.default_types())
5
Finds a content type module by its directory name.
Examples
iex> Sayfa.ContentType.find_by_directory("articles")
Sayfa.ContentTypes.Article
iex> Sayfa.ContentType.find_by_directory("nonexistent")
nil
Finds a content type module by its atom name.
Examples
iex> Sayfa.ContentType.find_by_name(:article)
Sayfa.ContentTypes.Article
iex> Sayfa.ContentType.find_by_name(:unknown)
nil