Create a gist now

Instantly share code, notes, and snippets.

defrecord Sample, foo: 0, bar:
defmodule GenServer do
defmacro from_record(record) do
Enum.map record.__record__(:fields), fn({name,_}) ->
quote do
def handle_call(unquote(name), from, record) do
apply record, name, []
end
def handle_call({ name, value }, from, record) do
apply record, name, [value]
end
end
end
end
end
defmodule MyServer do
@behavior :gen_server
def init(_) do
{ :ok, Sample.new }
end
GenServer.from_record(Sample)
# Implement other callbacks
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment