From 065e45f6248c48b0016c58000a7a6f3a562fcd84 Mon Sep 17 00:00:00 2001 From: Aroma <49058967+Q-in@users.noreply.github.com> Date: Mon, 21 Jun 2021 10:36:36 +0800 Subject: [PATCH 1/3] Update reader.ex keep it atom --- lib/reader.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/reader.ex b/lib/reader.ex index e71e521..cb87ee0 100644 --- a/lib/reader.ex +++ b/lib/reader.ex @@ -173,7 +173,7 @@ defmodule Eflatbuffers.Reader do {_, enum_options} = Map.get(tables, options.name) {_, %{ default: default }} = enum_options.type - map_new = Map.put(map, name, Atom.to_string(Map.get(enum_options.members, default))) + map_new = Map.put(map, name, Map.get(enum_options.members, default)) read_table_fields(fields, vtable, data_buffer_pointer, data, schema, map_new) end def read_table_fields([{name, { _type, options }} | fields], << 0, 0, vtable :: binary >>, data_buffer_pointer, data, schema, map) do From 804cc17caa453dfb9271cbab3992230dddd38aa1 Mon Sep 17 00:00:00 2001 From: Aroma Date: Mon, 28 Jun 2021 18:59:17 +0800 Subject: [PATCH 2/3] is_binary -> is_atom --- lib/writer.ex | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/writer.ex b/lib/writer.ex index 14a0526..f3f95af 100644 --- a/lib/writer.ex +++ b/lib/writer.ex @@ -77,17 +77,16 @@ defmodule Eflatbuffers.Writer do [ << vector_length :: little-size(32) >>, data_buffer_and_data(index_types, values, path, schema) ] end - def write({:enum, options = %{ name: enum_name }}, value, path, {tables, _} = schema) when is_binary(value) do + def write({:enum, options = %{ name: enum_name }}, value, path, {tables, _} = schema) when is_atom(value) do {:enum, enum_options} = Map.get(tables, enum_name) members = enum_options.members {type, type_options} = enum_options.type # if we got handed some defaults from outside, # we put them in here type_options = Map.merge(type_options, options) - value_atom = :erlang.binary_to_existing_atom(value, :utf8) - index = Map.get(members, value_atom) + index = Map.get(members, value) case index do - nil -> throw({:error, {:not_in_enum, value_atom, members}}) + nil -> throw({:error, {:not_in_enum, value, members}}) _ -> write({type, type_options}, index, path, schema) end end From ba9175522f1cab027cf973fb0df52a8bbd69f4e5 Mon Sep 17 00:00:00 2001 From: Aroma Date: Mon, 28 Jun 2021 19:53:58 +0800 Subject: [PATCH 3/3] keep it atom too --- lib/reader.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/reader.ex b/lib/reader.ex index cb87ee0..735c684 100644 --- a/lib/reader.ex +++ b/lib/reader.ex @@ -84,8 +84,7 @@ defmodule Eflatbuffers.Reader do case Map.get(members, index) do nil -> throw({:error, {:not_in_enum, index, members}}) - value_atom -> - Atom.to_string(value_atom) + value_atom -> value_atom end end