@@ -333,7 +333,7 @@ defmodule JSON do
333333
334334 """
335335 @ spec encode! ( a , ( a -> iodata ( ) ) ) :: binary ( ) when a: var
336- def encode! ( term , encoder \\ & encode_value / 2 ) do
336+ def encode! ( term , encoder \\ & default_encode / 2 ) do
337337 IO . iodata_to_binary ( encoder . ( term , encoder ) )
338338 end
339339
@@ -353,15 +353,19 @@ defmodule JSON do
353353 "[123,\" string\" ,{\" key\" :\" value\" }]"
354354
355355 """
356- @ spec encode !( a , ( a -> iodata ( ) ) ) :: iodata ( ) when a: var
357- def encode_to_iodata! ( term , encoder \\ & encode_value / 2 ) do
356+ @ spec encode_to_iodata !( a , ( a -> iodata ( ) ) ) :: iodata ( ) when a: var
357+ def encode_to_iodata! ( term , encoder \\ & default_encode / 2 ) do
358358 encoder . ( term , encoder )
359359 end
360360
361361 @ doc """
362- This is the default function used to recursively encode each value.
362+ This is the default encode implementation passed to `encode!/1`.
363+
364+ This function is most typically passed as second argument to
365+ `encode!/2` and `encode_to_iodata!/2`. The default implementation
366+ simply dispatches to `JSON.Encoder.encode/2`.
363367 """
364- def encode_value ( value , encoder ) when is_atom ( value ) do
368+ def default_encode ( value , encoder ) when is_atom ( value ) do
365369 case value do
366370 nil -> "null"
367371 true -> "true"
@@ -370,21 +374,21 @@ defmodule JSON do
370374 end
371375 end
372376
373- def encode_value ( value , _encoder ) when is_binary ( value ) ,
377+ def default_encode ( value , _encoder ) when is_binary ( value ) ,
374378 do: :elixir_json . encode_binary ( value )
375379
376- def encode_value ( value , _encoder ) when is_integer ( value ) ,
380+ def default_encode ( value , _encoder ) when is_integer ( value ) ,
377381 do: :elixir_json . encode_integer ( value )
378382
379- def encode_value ( value , _encoder ) when is_float ( value ) ,
383+ def default_encode ( value , _encoder ) when is_float ( value ) ,
380384 do: :elixir_json . encode_float ( value )
381385
382- def encode_value ( value , encoder ) when is_list ( value ) ,
386+ def default_encode ( value , encoder ) when is_list ( value ) ,
383387 do: :elixir_json . encode_list ( value , encoder )
384388
385- def encode_value ( % { } = value , encoder ) when not is_map_key ( value , :__struct__ ) ,
389+ def default_encode ( % { } = value , encoder ) when not is_map_key ( value , :__struct__ ) ,
386390 do: :elixir_json . encode_map ( value , encoder )
387391
388- def encode_value ( value , encoder ) ,
392+ def default_encode ( value , encoder ) ,
389393 do: JSON.Encoder . encode ( value , encoder )
390394end
0 commit comments