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