Skip to content

Commit f0ea0e5

Browse files
committed
inlines array/map recursion starting
1 parent 3e0b1b9 commit f0ea0e5

File tree

1 file changed

+14
-22
lines changed

1 file changed

+14
-22
lines changed

lib/mmdb2_decoder/data.ex

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,25 +69,25 @@ defmodule MMDB2Decoder.Data do
6969
<<@extended::size(3), 29::size(5), len::size(8), @extended_array, part_rest::binary>>,
7070
data_full
7171
) do
72-
decode_array(part_rest, data_full, 28 + len)
72+
decode_array(part_rest, data_full, 28 + len, [])
7373
end
7474

7575
def decode(
7676
<<@extended::size(3), 30::size(5), len::size(16), @extended_array, part_rest::binary>>,
7777
data_full
7878
) do
79-
decode_array(part_rest, data_full, 285 + len)
79+
decode_array(part_rest, data_full, 285 + len, [])
8080
end
8181

8282
def decode(
8383
<<@extended::size(3), 31::size(5), len::size(24), @extended_array, part_rest::binary>>,
8484
data_full
8585
) do
86-
decode_array(part_rest, data_full, 65821 + len)
86+
decode_array(part_rest, data_full, 65821 + len, [])
8787
end
8888

8989
def decode(<<@extended::size(3), len::size(5), @extended_array, part_rest::binary>>, data_full) do
90-
decode_array(part_rest, data_full, len)
90+
decode_array(part_rest, data_full, len, [])
9191
end
9292

9393
def decode(<<@extended::size(3), value::size(5), @extended_bool, part_rest::binary>>, _) do
@@ -128,19 +128,19 @@ defmodule MMDB2Decoder.Data do
128128
end
129129

130130
def decode(<<@map::size(3), 29::size(5), len::size(8), part_rest::binary>>, data_full) do
131-
decode_map(part_rest, data_full, 28 + len)
131+
decode_map(part_rest, data_full, 28 + len, %{})
132132
end
133133

134134
def decode(<<@map::size(3), 30::size(5), len::size(16), part_rest::binary>>, data_full) do
135-
decode_map(part_rest, data_full, 285 + len)
135+
decode_map(part_rest, data_full, 285 + len, %{})
136136
end
137137

138138
def decode(<<@map::size(3), 31::size(5), len::size(24), part_rest::binary>>, data_full) do
139-
decode_map(part_rest, data_full, 65821 + len)
139+
decode_map(part_rest, data_full, 65821 + len, %{})
140140
end
141141

142142
def decode(<<@map::size(3), len::size(5), part_rest::binary>>, data_full) do
143-
decode_map(part_rest, data_full, len)
143+
decode_map(part_rest, data_full, len, %{})
144144
end
145145

146146
def decode(<<@pointer::size(3), 0::size(2), offset::size(11), part_rest::bitstring>>, data_full) do
@@ -183,18 +183,14 @@ defmodule MMDB2Decoder.Data do
183183

184184
# value decoding
185185

186-
defp decode_array(data_part, data_full, size) do
187-
decode_array_rec(data_part, data_full, size, [])
188-
end
189-
190-
defp decode_array_rec(data_part, _, 0, acc) do
186+
defp decode_array(data_part, _, 0, acc) do
191187
{Enum.reverse(acc), data_part}
192188
end
193189

194-
defp decode_array_rec(data_part, data_full, size, acc) do
190+
defp decode_array(data_part, data_full, size, acc) do
195191
{value, rest} = decode(data_part, data_full)
196192

197-
decode_array_rec(rest, data_full, size - 1, [value | acc])
193+
decode_array(rest, data_full, size - 1, [value | acc])
198194
end
199195

200196
defp decode_binary(data_part, len) do
@@ -203,21 +199,17 @@ defmodule MMDB2Decoder.Data do
203199
{value, rest}
204200
end
205201

206-
defp decode_map(data_part, data_full, size) do
207-
decode_map_rec(data_part, data_full, size, %{})
208-
end
209-
210-
defp decode_map_rec(data_part, _, 0, acc) do
202+
defp decode_map(data_part, _, 0, acc) do
211203
{acc, data_part}
212204
end
213205

214-
defp decode_map_rec(data_part, data_full, size, acc) do
206+
defp decode_map(data_part, data_full, size, acc) do
215207
{key, part_rest} = decode(data_part, data_full)
216208
{value, dec_rest} = decode(part_rest, data_full)
217209

218210
acc = Map.put(acc, String.to_atom(key), value)
219211

220-
decode_map_rec(dec_rest, data_full, size - 1, acc)
212+
decode_map(dec_rest, data_full, size - 1, acc)
221213
end
222214

223215
defp decode_signed(data_part, bitlen) do

0 commit comments

Comments
 (0)