Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Phoenix Router Extension
defmodule Nectar.RouterExtension do
defmacro __using__(_opts) do
quote do
Module.register_attribute(__MODULE__, :defined_routes, accumulate: true)
import Nectar.RouterExtension, only: [define_route: 1]
end
end
defmacro define_route([do: block]) do
route = Macro.escape(block)
quote bind_quoted: [route: route] do
Module.put_attribute(__MODULE__, :defined_routes, route)
end
end
end
defmodule Nectar.ExtendRouter do
use Nectar.RouterExtension
define_route do: get "/favorites", FavoriteProducts.FavoriteController, :index
defmacro mount do
@defined_routes
end
end
defmodule Nectar.Router do
...
# Add Route Here
# get "/favorites", FavoriteProducts.FavoriteController, :index
require Nectar.ExtendRouter
Nectar.ExtendRouter.mount
...
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.