lib/surface/directive.ex
defmodule Surface.Directive do
@callback extract(node :: any, meta :: Surface.AST.Meta.t()) ::
[Surface.AST.Directive.t()]
| Surface.AST.Directive.t()
@callback process(directive :: Surface.AST.Directive.t(), node :: Surface.AST.t()) ::
Surface.AST.t()
@optional_callbacks process: 2
defmacro __using__(_opts) do
quote do
alias Surface.AST
alias Surface.Compiler.Helpers
alias Surface.IOHelper
@behaviour unquote(__MODULE__)
end
end
end