A user-agent parser for Erlang