@@ -266,12 +266,38 @@ defmodule Module do
266
266
267
267
## Runtime information about a module
268
268
269
- __info__
270
-
271
- ... (as yet unwritten content) ...
269
+ It is possible to query a module at runtime to find out which functions and
270
+ macros it defines, extract its docstrings, etc. See `__info__/1`.
272
271
273
272
'''
274
273
274
+ @ doc """
275
+ Provides runtime information about functions and macros defined by the
276
+ module, enables docstring extraction, etc.
277
+
278
+ Each module gets an `__info__/1` function when it's compiled. The function
279
+ takes one of the following atoms:
280
+
281
+ * `:functions` - keyword list of public functions along with their arities
282
+
283
+ * `:macros` - keyword list of public macros along with their arities
284
+
285
+ * `:docs` - list of all docstrings attached to functions and macros
286
+ using the `@doc` attribute
287
+
288
+ * `:moduledoc` - tuple `{ <line>, <doc> }` where `line` is the line on
289
+ which module definition starts and `doc` is the string
290
+ attached to the module using the `@moduledoc` attribute
291
+
292
+ * `:module` - module name (`Module == Module.__info__(:module)`)
293
+
294
+ In addition to the above, you may also pass to `__info__/1` any atom supported
295
+ by Erlang's `module_info` function which also gets defined for each compiled
296
+ module. See http://erlang.org/doc/reference_manual/modules.html#id74571 for
297
+ more information.
298
+ """
299
+ def __info__( kind)
300
+
275
301
@ doc """
276
302
Check if a module is open, i.e. it is currently being defined
277
303
and its attributes and functions can be modified.
0 commit comments