Current section
Files
Jump to
Current section
Files
lib/routemaster/topic.ex
defmodule Routemaster.Topic do
@moduledoc """
Utility functions to validate topic names.
"""
@format ~r/^[a-z_]{1,64}$/
@doc """
Checks if a string is a valid topic name. Returns a boolean.
"""
@spec valid_name?(binary) :: boolean
def valid_name?(name) do
Regex.match? @format, name
end
@doc """
Validates a topic name, raises a `Routemaster.Topic.InvalidNameError`
exception if invalid.
"""
@spec validate_name!(binary) :: nil
def validate_name!(name) do
unless valid_name?(name) do
raise __MODULE__.InvalidNameError, name
end
end
defmodule InvalidNameError do
@moduledoc false
defexception [:message]
def exception(name) do
msg = "invalid topic name #{inspect name}."
%__MODULE__{message: msg}
end
end
end