Exonerate.Modules (exonerate v1.2.2)

Copy Markdown View Source

Centralized module registry for Exonerate.

Consolidates all module lookups (types, combining filters, object filters, array filters, format validators) into a single module for easier maintenance and discoverability.

Summary

Functions

Returns all type names.

Returns the module for an array filter.

Returns all array filter modules.

Returns all built-in format names (including those without dedicated modules).

Returns the module for a combining filter.

Returns true if the given filter name is a standard combining filter.

Returns the standard combining filter names (excludes dependentSchemas).

Returns the module for a format validator.

Returns all format module mappings.

Generic module lookup by category.

Returns the module for an object filter.

Returns the finalizer object filter modules.

Returns the iterator object filter modules.

Returns the outer object filter modules (non-iterator).

Returns the module for a JSON type.

Functions

all_types()

@spec all_types() :: [String.t()]

Returns all type names.

array_filter(filter_name)

@spec array_filter(String.t()) :: module() | nil

Returns the module for an array filter.

Examples

iex> Exonerate.Modules.array_filter("items")
Exonerate.Filter.Items

iex> Exonerate.Modules.array_filter("uniqueItems")
Exonerate.Filter.UniqueItems

array_modules()

Returns all array filter modules.

builtin_formats()

Returns all built-in format names (including those without dedicated modules).

combining(filter_name)

@spec combining(String.t()) :: module() | nil

Returns the module for a combining filter.

Examples

iex> Exonerate.Modules.combining("allOf")
Exonerate.Combining.AllOf

iex> Exonerate.Modules.combining("$ref")
Exonerate.Combining.Ref

iex> Exonerate.Modules.combining("dependentSchemas")
Exonerate.Combining.DependentSchemas

combining?(filter)

@spec combining?(String.t()) :: boolean()

Returns true if the given filter name is a standard combining filter.

Note: Returns false for "dependentSchemas" since it's object-specific. For a check that includes all combining-style filters, use combining/1 != nil.

combining_filters()

@spec combining_filters() :: [String.t()]

Returns the standard combining filter names (excludes dependentSchemas).

These are the combining filters that apply to all types, not just objects.

format(format_name)

@spec format(String.t()) :: module() | nil

Returns the module for a format validator.

Examples

iex> Exonerate.Modules.format("email")
Exonerate.Formats.Email

iex> Exonerate.Modules.format("uri")
Exonerate.Formats.Uri

format_modules()

Returns all format module mappings.

lookup(atom, name)

@spec lookup(:type | :combining | :object | :array | :format, String.t()) ::
  module() | nil

Generic module lookup by category.

Categories

  • :type - JSON type modules
  • :combining - Combining filter modules
  • :object - Object filter modules
  • :array - Array filter modules
  • :format - Format validator modules

Examples

iex> Exonerate.Modules.lookup(:type, "string")
Exonerate.Type.String

iex> Exonerate.Modules.lookup(:combining, "allOf")
Exonerate.Combining.AllOf

object_filter(filter_name)

@spec object_filter(String.t()) :: module() | nil

Returns the module for an object filter.

Examples

iex> Exonerate.Modules.object_filter("properties")
Exonerate.Filter.Properties

iex> Exonerate.Modules.object_filter("required")
Exonerate.Filter.Required

object_finalizer_modules()

Returns the finalizer object filter modules.

object_iterator_modules()

Returns the iterator object filter modules.

object_outer_modules()

Returns the outer object filter modules (non-iterator).

type(type_name)

@spec type(String.t()) :: module() | nil

Returns the module for a JSON type.

Examples

iex> Exonerate.Modules.type("string")
Exonerate.Type.String

iex> Exonerate.Modules.type("object")
Exonerate.Type.Object