[erlang-questions] maps and lager: how to handle new type gracefully?

alisdair sullivan alisdairsullivan@REDACTED
Wed Apr 30 07:55:13 CEST 2014

On Apr 29, 2014, at 5:21 AM, Max Lapshin <max.lapshin@REDACTED> wrote:

> huh, rather complicated, but ok, it will work.
> Thanks.

i handled this problem in jsx by adding a `rebar.config.script` with the following contents:

case os:getenv("JSX_NOMAPS") or proplists:get_value(jsx_nomaps, CONFIG, false) of
  false ->
    try file:script("config/maps") of
      {ok, true} -> [{erl_opts, [{d, maps_support}]}] ++ CONFIG;
      _ -> CONFIG
    catch _:_ -> CONFIG
  _ -> CONFIG

`config/maps` is just

maps:keys(#{0 => false, 1 => true}) == [0,1].

if you use more features of maps you can test for them also with a more complicated expression

then all map related code in jsx itself goes inside ifdefs guarded by `maps_support`

More information about the erlang-questions mailing list