defmodule Timex.Parse.DateTime.Tokenizer do @moduledoc """ Defines the API for a custom tokenizer which can extend Timex's datetime parsing facilities. """ alias Timex.Parse.DateTime.Tokenizers.Directive @callback tokenize(format_string :: String.t()) :: {:ok, [Directive.t()]} | {:error, term} @callback apply(DateTime.t(), token :: atom, value :: term) :: DateTime.t() | {:error, term} | :unrecognized defmacro __using__(_) do quote do @behaviour Timex.Parse.DateTime.Tokenizer import Timex.Parse.DateTime.Tokenizer alias Timex.Parse.DateTime.Tokenizers.Directive end end end