Skip to content

Instantly share code, notes, and snippets.

@pikender
Last active April 12, 2016 16:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pikender/52c5f30c74f1a2bbff886e6ffcc6be46 to your computer and use it in GitHub Desktop.
Save pikender/52c5f30c74f1a2bbff886e6ffcc6be46 to your computer and use it in GitHub Desktop.
Phoenix Router Extension
defmodule Nectar.RouterExtension do
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
Module.register_attribute(__MODULE__, :defined_routes, accumulate: true)
import Nectar.RouterExtension, only: [define_route: 1]
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