README.md

# erl_eval_records
Erlang library for using records in erl_eval. Without extra manipulation you can not use records in interpret by `erl_eval` code. To solve this problems in erlang shell some magic is done.

This magic consist of:
 * fetching records definitions
 * copy it a fake module
 * add fake function with code than needs to be run
 * replace records in this code to tuples
 * extract result code from fake function

Interface of this simple helper module contains functions represented 2 phases:
 * `load/1` (or `load_all/1`) to load record information from module(s) with records
 * `expand/2` expand records in given expressions


```erlang
-record(test, {a}).

test() ->
  {ok, Tokens  , _} = erl_scan:string("#foo{a=A} = {foo, 0}, A."),
  {ok, Exprs      } = erl_parse:parse_exprs(Tokens),
  NewExprs          = erl_eval_records:expand(erl_eval_records:load(?MODULE), Exprs),
  {value, Value, _} = erl_eval:exprs(NewExprs, []),
  ?assertEqual(Value, 0).
```