Skip to content

Commit 01d12f9

Browse files
committed
introduce reflection function
1 parent d79dc90 commit 01d12f9

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

lib/parameters.ex

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,9 @@ defmodule Parameters do
2323
end
2424

2525
defmacro __before_compile__(env) do
26-
for schema <- Module.get_attribute(env.module, :parameters) do
27-
parent = Module.concat(Parameters, env.module)
28-
29-
quote do
30-
unquote(define_schema(parent, schema))
31-
end
26+
quote do
27+
unquote(define_schemas(env.module))
28+
unquote(define_reflections())
3229
end
3330
end
3431

@@ -69,6 +66,25 @@ defmodule Parameters do
6966
changeset_for(module, fun, params)
7067
end
7168

69+
defp define_reflections() do
70+
quote do
71+
def __parameters__ do
72+
@parameters
73+
end
74+
end
75+
end
76+
77+
defp define_schemas(module) do
78+
parameters = Module.get_attribute(module, :parameters)
79+
parent = Module.concat(Parameters, module)
80+
81+
for schema <- parameters do
82+
quote do
83+
unquote(define_schema(parent, schema))
84+
end
85+
end
86+
end
87+
7288
defp define_schema(parent, node) do
7389
module = Module.concat(parent, Macro.camelize("#{node.id}"))
7490

0 commit comments

Comments
 (0)